meine Modelle Angenommen:django Filter queryset auf Zählung eines anderen queryset basierend
model book
charfield name
model review
charfield bookname
Gibt es eine Möglichkeit zu filtern/ausschließen die Bücher Bewertung Null zählen? Ich habe das im Stackoverflow durchgesehen, konnte aber keine Antwort finden. Dies ist keine Hausaufgabenfrage. Ich habe ein Anfrage-Set ca. Größe um 200.000, aus denen ich zu dem Schluss kam, dass es nicht schlau ist, zu filtern, indem Sie das Abfrage-Set in eine Python-Liste konvertieren, filtern und dann zurück konvertieren. Kann mir jemand dabei helfen? Dank
Gibt es einen Grund, warum Ihr Überprüfungsmodell ein Charfield mit einem Buchnamen anstelle eines Fremdschlüssels direkt zum Korrekt hat t Objekt buchen? Der Filter wäre einfacher zu machen, wenn die Modelle tatsächlich verknüpft wären. Außerdem ist aus Ihrer Frage nicht klar, ob Sie die Bücher ohne Bewertungen aus Ihrem Suchanfragensatz beibehalten oder ausschließen möchten. – ChidG
@ChidG danke für die Antwort. Angenommen, ich habe eine große Menge an Büchern und Rezensionen, dachte ich, dass das Verbinden einer Rezension mit einem Buch jedes Mal, wenn ich es hinzufüge, wegen der Nachschlagezeit zu lange dauern würde. Sollte die Verknüpfung dafür der Weg sein? – verticese
Die Verknüpfung mit einem Fremdschlüssel ist definitiv der beste Standard, um dieses Problem zu lösen. Die Zeit, um einen Datenbank-Join zwischen den beiden Tabellen zu machen, wird weitaus weniger Probleme bereiten als die anderen Probleme, die dadurch verursacht werden, dass sie nicht verbunden werden. Zum Beispiel müsste Ihre Datenbank viel größer sein (auf Speicherplatz), weil die Buchnamen alle an mehreren Stellen gespeichert werden müssen. Und was passiert, wenn Sie mehr als ein Buch mit demselben Namen haben? Oder wenn jemand in einer Rezension einen Buchnamen falsch eingibt? Ich würde vorschlagen, dass Sie etwas über das Design relationaler Datenbanken nachlesen. – ChidG