Меняют ли дальнейшие манипуляции с набором запросов исходный набор запросов - PullRequest
0 голосов
/ 13 февраля 2012

Если у нас есть набор запросов, скажем

eventset=Event.objects.filter(eventdate=date)

И позже, если я сделаю что-то подобное с объектом набора запросов, будет ли это правильной логикой или будет обрабатываться набор событий?

for event in eventset.order_by('-likes'):
    if event.venue in venuerankings:
        venuerankings.append[event.venue]

Изменяет ли вышеприведенная часть кода порядок объектов в «наборе событий»?

Соответствующая часть кода.

totalvenues=len(Venues.objects.all()))
    events=[[''] * totalvenues for row in range(24)]
eventset=Event.objects.filter(eventdate=date)
venuerankings=[]
for event in eventset.order_by('-likes'):
    if event.venue in venuerankings:
        venuerankings.append[event.venue]
for venueno,venue in enumerate(venuerankings):
    for event in eventset.filter[venue=venue]:
        events[event.time][venueno]=event

1 Ответ

1 голос
/ 13 февраля 2012

Ваш код не повлияет на исходный набор запросов, потому что наборы запросов ленивы.

Это означает, что в вашем цикле for event in eventset.order_by('-likes'): вы делаете две вещи:

(1) создание нового набора запросов, упорядоченного по '-likes'; и

(2) создание, в свою очередь, каждого объекта, указанного в наборе запросов.

Соответственно, если вы запустите цикл во второй раз, вы получите свежие объекты, которые не будут отражать несохраненные изменения, внесенные в объекты в предыдущем цикле.

...