Ho osservato questo comportamento e non ho capito bene. Permettetemi di dire che fare una query:Django: controlla se il valore in values_list con e senza prefetch_related/select_related
result = model.objects.all()
result_pks = result.values_list("id",flat=True)
print result_pks
E ottengo:
[1,2,3,4]
Poi voglio verificare se un certo valore è nella lista dei PKS tornato:
val = 2
print val in result_pks
Questo restituirà True, ma se invece cambio risultato a:
result = model.objects.prefetch_related("related_field").all()
result_pks = result.values_list("id",flat=True)
print result_pks
Ho ancora:
[1,2,3,4]
Ma quando lo faccio:
val=2
print val in result_pks
ottengo False. Ho provato a utilizzare select_related invece, e ciò ha restituito True come mi aspettavo. Qualcuno può spiegarmi perché la differenza?
Quale versione di Django stai usando? –