was ist Abfrage.clone(), queryset.clone() für django?
Sehe ich clone() verwendet wird, umfassend in django-code
queryset.query.clone()
queryset.clone()
Was ist es und soll ich imitieren das Verhalten in meinem queryset-oder manager-Methoden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Hauptgründe für
clone()
:Es ermöglicht die Verkettung. Wenn Sie Kette querysets zusammen (Z. B. mehrere
filter()
anrufen) möchten Sie eine neue Kopie der queryset jedes mal, die Sie ändern können.Es können Sie vermeiden, dass veraltete cache-Ergebnisse. Da querysets cache Ihre Ergebnisse, wenn Sie bewertet werden, wenn Sie wollen, stellen Sie sicher, dass Sie auf die Datenbank müssen Sie wieder zu Klonen, das queryset.
Wenn Sie wissen, was Sie tun könnten Sie es, aber beachten Sie, dass es nicht eine öffentliche API. In diesem interessanten Django Entwickler-thread die Entwickler sprechen darüber, ob oder nicht
clone()
sollte öffentlich sein. Sie entscheiden sich gegen Sie, zum Teil, weil:clone
) die bestehenden queryset, ändern Sie es, und kehren Sie dann das neue Objekt.Als Kevin Punkte in seine Antwort, die
clone()
Methode ist nicht dokumentiert Teil des Django-API. Jedoch, dieall()
Methode vollständig dokumentiert ist, und tut, was Sie wollten wahrscheinlich ausclone()
.all()
ruft die interne_clone
Methode: github.com/django/django/blob/1.9.6/django/db/models/... Frage: stackoverflow.com/questions/22804252/...