Obserwowałem to zachowanie i nie do końca rozumiem. Powiedzmy robię zapytanie:Django: sprawdź, czy wartość w values_list z & bez prefetch_related/select_related
result = model.objects.all()
result_pks = result.values_list("id",flat=True)
print result_pks
I otrzymujemy:
[1,2,3,4]
Następnie chcę, aby sprawdzić, czy dany stosunek jest na liście pks powrócił:
val = 2
print val in result_pks
ten zwróci True, ale jeśli zamiast tego zmienię wynik na:
result = model.objects.prefetch_related("related_field").all()
result_pks = result.values_list("id",flat=True)
print result_pks
wciąż otrzymuję:
[1,2,3,4]
Ale kiedy zrobić:
val=2
print val in result_pks
uzyskać False. Próbowałem używać select_related zamiast tego, i który zwrócił True, jak się spodziewałem. Czy ktoś może mi wyjaśnić, dlaczego różnica?
Jakiej wersji Django używasz? –