цикл for в Python для получения n-го элемента в наборе запросов - PullRequest
0 голосов
/ 04 декабря 2018

Пожалуйста, вы можете проверить мой код Python ниже, если это нормально сделать для набора запросов:

gp_id= [0,1,2]
for gp in gp_id:
    specail_list = Special.objects.filter(
        promotion=False, 
        start__lte=date_instance, 
        minimum_stay__lte=nights, 
        object_id=room_filter.id, 
        end__gte=date_instance, 
        is_active=True, 
        member_deal=False
    )[gp]
    print specail_list

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Так что я думаю, что вы пытаетесь запросить первые три элемента в списке, индексы 0, 1, 2. Так что, в то время как то, что вы делаете, действительно, этот способ лучше.

Slice - общая функция, которую должен знать каждый программист Python:

Документы Python для "Slice: https://docs.python.org/3/library/functions.html#slice

Документы Django для" Ограничение наборов запросов ": https://docs.djangoproject.com/en/2.1/topics/db/queries/#limiting-querysets

Возьмет первые три элемента, начиная с не введенного 0-го индекса. Скобками также могли быть [0:3].

special_list = Special.objects.filter(
    promotion=False, 
    start__lte=date_instance, 
    minimum_stay__lte=nights, 
    object_id=room_filter.id, 
    end__gte=date_instance, 
    is_active=True, 
    member_deal=False
)[:3]
0 голосов
/ 04 декабря 2018

Я думаю, что вы можете выполнить цикл, например, так:

special_queryset = Special.objects.filter(
    promotion=False, 
    start__lte=date_instance, 
    minimum_stay__lte=nights, 
    object_id=room_filter.id, 
    end__gte=date_instance, 
    is_active=True, 
    member_deal=False
    id__in = gp_id
)
for i in special_queryset:
    print(i)

Если вы хотите обновить то же самое для элементов в наборе запросов, используйте метод update().

special_queryset.update(promotion=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...