Frage an den Vereinsvertreter
Wenn Sie direkt auf das zugehörige Feld ManyToMany und ReverseForeignKey zugreifen, wird eine Liste der zugehörigen Modelle zurückgegeben.
Gleichzeitig wird jedoch eine Teilmenge der QuerySet-API verfügbar gemacht, sodass Sie relevante Modelle direkt aus dem übergeordneten Modell filtern, erstellen, auswählen usw. können.
!!!Hinweis Standardmäßig wurde ein öffentlich verfügbares QuerySet so gefiltert, dass nur die Modelle zurückgegeben werden, die mit dem übergeordneten Modell verknüpft sind.
1 | |
!!!-note Beachten Sie, dass Sie beim Zugriff auf QuerySet-API-Methoden über QuerysetProxy nicht die Objekteigenschaften wie normale Abfragen verwenden müssen.
1 2 3 | |
!!!Warnung Eine Abfrage eines verknüpften Modells aus ManyToMany löscht die Liste der verwandten Modelle, die auf das übergeordnete Modell geladen werden:
1 2 3 4 5 6 7 8 9 | |
Auslesen von Daten aus der Datenbank
erhalten.
get (**kwargs): -> Beschreibung
Um nur eines der nach Namen gefilterten relationalen Modelle zu erhalten, können Sie get (**Die Kwars-Methode.
1 2 3 4 5 6 7 8 9 | |
Tip
Erwerben oder schaffen
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Versuchen Sie , eine Zeile zu erhalten , die die Bedingung erfüllt , und wenn eine NoMatch-Ausnahme ausgelöst wird , wird eine neue Zeile mit den angegebenen kwargs und \ _ defaults erstellt .
Tip
Alles .
all(**kwargs) -> List[Optional["Model"]]
Um eine Liste der verwandten Modelle zu erhalten , verwenden Sie die all () - Methode .
Beachten Sie , dass Sie Abfragesätze wie normale Abfragen filtern , relevante , ausgeschlossene Felder usw . auswählen können .
1 2 3 4 5 6 7 | |
Tip
Umbenennung
iterate(**kwargs) -> AsyncGenerator["Model"]
Um das zugehörige Modell zu durchlaufen , verwenden Sie die iterate () - Methode .
Beachten Sie , dass Sie Abfragesätze wie normale Abfragen filtern , relevante , ausgeschlossene Felder usw . auswählen können .
1 2 3 | |
Tip
Einfügen/Aktualisieren von Daten in eine Datenbank
erschaffen .
Erstellen (**kwargs): -> Modell
Erstellen Sie relevante Modelle direkt aus dem übergeordneten Modell.
Verknüpfte Tabellen und relationale IDs in der Datenbank werden automatisch ausgefüllt.
1 2 3 4 | |
Tip
Wenn Sie für eine Mehr-zu-Mehr-Beziehung zusätzliche Felder auf dem explizit bereitgestellten Passthrough-Modell deklarieren, gibt es eine zusätzliche Funktion für den Übergabeparameter, die zum Erstellen eines Passthrough-Modells verwendet wird.
Gegeben sind solche Modelle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Sie können das Modell mit Feldern in einem create ()-Aufruf wie folgt füllen:
1 2 3 4 5 6 7 | |
Erwerben oder schaffen
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Versuchen Sie, eine Zeile zu erhalten, die die Kriterien erfüllt, und wenn eine NoMatch-Ausnahme ausgelöst wird, wird eine neue Zeile mit einem bestimmten kwargs erstellt.
Tip
Aktualisieren oder Erstellen
update_or_create(**kwargs) -> Model
Aktualisieren Sie das Modell oder erstellen Sie ein neues Modell, wenn es keine Übereinstimmung in der Datenbank gibt.
!!!tip Lesen Sie mehr in der Abfrage-Dokumentation update_or_create
Aktualisierung
update(**kwargs, each:bool = False) -> int
Aktualisieren Sie die relevanten Modelle mit den angegebenen Schlüsselwortargumenten, um die Anzahl der aktualisierten Zeilen zurückzugeben.
Tip
Beachten Sie, dass bei Updates mit mehreren Beziehungen auch Parameter mit Feldnamen und Dictionaries akzeptiert werden können.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Im obigen Beispiel können Sie die Eigenschaft postcategory im folgenden Aufruf aktualisieren:
1 2 3 | |
Filterung und Ordnung
Auswählen
filter(*args, **kwargs) -> QuerySet
Ermöglicht Ihnen, Filter für FK-Beziehungen zu verwenden, um nach beliebigen Modellattributen/-feldern zu filtern und eine Instanz zu erhalten.
Tip
Ausgeschlossen
exclude(*args, **kwargs) -> QuerySet
Es funktioniert genau wie ein Filter, und alle Modifikatoren (Suffixe) sind gleich, geben aber die Bedingung not zurück.
Tip
Bestellung basiert.
order_by(columns:Union[List, str]) -> QuerySet
Mit order_by () können Sie die Ergebnisse in Ihrer Datenbank nach ausgewählten Feldern sortieren.
Tip
Kontakt und Untersuche.
Auswahl betrifft.
select_related(related: Union[List, str]) -> QuerySet
Ermöglicht das Vornehmen relevanter Modelle während derselben Abfrage.
Wenn Sie select_lated verwenden, führen Sie immer nur eine Abfrage in Ihrer Datenbank aus, was bedeutet, dass eine (manchmal komplizierte) Verbindung generiert wird, die später mit verschachtelten Modellen in Python verarbeitet wird.
!!!tip Lesen Sie mehr über select_lated in der Abfragedokumentation
Vorausschauende relevant
prefetch_related(related: Union[List, str]) -> QuerySet
Ermöglicht das Pre-Abrufen relationaler Modelle während einer Abfrage-im Gegensatz zu select_lated wird jedoch jedes nachfolgende Modell in einer separaten Datenbankabfrage erworben.
Bei Verwendung von prefetch_lated führt jedes Modell eine Abfrage für die Datenbank aus, d. h. Sie führen mehrere Abfragen nacheinander aus.
Tip
Seiten und Anzahl
Seite Seite
paginate(page: int, page_size: int = 20) -> QuerySet
Kombiniert werden Offset-und Einschränkungsmethoden basierend auf Seitenzahl und Größe.
Tip
Begrenzung
limit(limit_count: int) -> QuerySet
Sie können die Ergebnisse auf die erforderliche Anzahl von übergeordneten Modellen beschränken.
Tip
Offset ausgleichende
offset(offset: int) -> QuerySet
Sie können die Ergebnisse durch die erforderliche Anzahl von Mastermodellen ausgleichen.
Tip
Auswahl der Teilmengen.
Bereich
fields(columns: Union[List, str, set, dict]) -> QuerySet
Mit fields () können Sie eine Teilmenge der Modellspalte auswählen, um die Datenlast zu begrenzen.
Tip
Ausschlusswort
exclude_fields(columns: Union[List, str, set, dict]) -> QuerySet
Mit except_fields () können Sie eine Teilmenge der Modellspalten auswählen, die ausgeschlossen werden sollen, um das Laden von Daten zu begrenzen.
!!!tip Weitere Informationen in der Abfragedokumentation außer_fields
Sammelfunktion
Anzahl der
count(distinct: bool = True) -> int
Gibt die Anzahl der Zeilen zurück, die der angegebenen Bedingung entsprechen (d. h. Filter und Ausschlüsse anwenden)
Tip
Existiert
vorhanden ()-> boolesche Werte
Gibt einen booleschen Wert zurück, um zu bestätigen, dass eine Zeile eine bestimmte Bedingung erfüllt (gilt mit Filtern und Ausschlüssen)
Tip