2017-07-20 11 views
0

ich diesen django CodeDjango überprüfen, ob querysets sind gleich

q1 = MyModel.objects.all() 
q2 = MyModel.objects.all() 

wenn ich versuche,

print q1 == q2 

haben erhalte ich als

False 

So ergibt Wie kann ich, wenn zwei querysets überprüfen Ergebnis in Django sind gleich?

Antwort

1

Sie die querysets Listen umwandeln kann und prüfen, ob sie gleich sind:

list(q1) == list(q2) 
+0

Toll, das, was ich brauche, funktioniert funktioniert – Touhami

+1

Bestellung ist nicht garantiert, so wird dies nicht unbedingt funktionieren - obwohl ein Teil davon kommt auf "betrachten Sie Abfragegruppen mit dem gleichen Inhalt, aber unterschiedliche Reihenfolge gleich oder nicht"? –

+0

In Ihrem Beispiel können Sie nicht garantieren, dass das umgekehrte geordnete Abfrage-Set eine andere Reihenfolge als das nicht umgekehrte Abfrage-Set hat. Die Reihenfolge ist nicht garantiert, bevor Sie reverse() aufrufen, damit Sie nicht wissen, welche Reihenfolge umgekehrt wird. Das Hinzufügen einer Reihenfolge würde dies beheben und Unklarheiten beseitigen. https://stackoverflow.com/questions/7163640/what-is-the-default-order-of-a-list-returned-from-a-django-filter-call#7164126 –

0

Sie können .count sehen() oder:

q1 = Model.objects.all() 
q2 = Model.objects.all() 
equal = True 
for idx, q in q1: 
    if q != q2[idx]: 
     equal = False 
print(equal) 
+0

Nicht, dass Vergleich 'count()' wird Überprüfen Sie nur, ob die Abfragegruppen die gleiche Anzahl von Elementen haben. Es wird nicht überprüft, ob es sich um die gleichen Elemente handelt oder ob sie in derselben Reihenfolge sind. – Alasdair

Verwandte Themen