Gegevens invoegen in de database
Met de volgende methoden kunt u gegevens in een database invoegen.
-
Maken (**Kwargs) - > Model
-
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool] -
update_or_create(**kwargs) -> Model -
bulk_create(objects: List[Model]) -> None -
Model*Model.save () methode*Model.upsert () methode\ * Model.save\ _ lated () methode
-
Query Set Agent*
QuerysetProxy.create(**kwargs)methode*QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs)methode\ *QuerysetProxy.update_or_create(**kwargs)methode
creëren
Aanmaken (**kwargs): - > Model
Maak de modelinstantie, sla deze op in de database en keer terug om het model bij te werken (pk wordt ingevuld als het niet wordt doorgegeven en automatische verhoging is ingesteld).
De toegestane kwargs zijn modelveldnamen en correcte waardetypen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Een andere benadering is het creëren van modelsplitsing en persistentie.
1 2 | |
Tip
Verwerven of creëren
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Maak en verkrijg een combinatie van methoden.
Pogingen om rijen te krijgen die aan de criteria voldoen, en als er een NoMatch-uitzondering wordt gegenereerd, wordt er een nieuwe rij gemaakt met de gegeven kwargs en\ _ defaults.
Bij het aanleveren van een\ _ defaults woordenboek zullen de waarden die in\ _ defaults zijn ingesteld altijd worden ingesteld, inclusief het overschrijven van die welke expliciet zijn opgegeven. IE get_or_create(_defaults: {"title": "I win"}, title="never used") zal altijd "Ik heb gewonnen" als titel gebruiken, ongeacht of u uw eigen waarde in kwargs opgeeft.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
!!!Waarschuwing: Album en album2 in het bovenstaande voorbeeld zijn 2 verschillende Python-objecten, ondanks dat het equivalente rijen in de database zijn! Het bijwerken van een van hen zal de tweede niet vernieuwen totdat u expliciet () nieuwe gegevens uit de database laadt.
Merk op dat als u een nieuw object wilt maken, u de pk-kolomwaarde moet doorgeven of dat de pk-kolom moet worden ingesteld op automatisch verhogen
Bijwerken of aanmaken
update_or_create(**kwargs) -> Model
Werk het model bij of maak een nieuw model als er geen overeenkomst is in de database.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
Merk op dat als u een nieuw object wilt maken, u de pk-kolomwaarde moet doorgeven of dat de pk-kolom moet worden ingesteld op automatisch verhogen
batch aanmaken
bulk_create(objects: List["Model"]) -> None
Hiermee kunt u meerdere objecten tegelijk maken.
U moet een geldige lijst met modelobjecten doorgeven.
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 33 34 35 36 37 38 39 | |
model werkwijze
Elk modelexemplaar heeft een set methoden om zichzelf op te slaan, bij te werken of te laden.
# # opslaan
U kunt de methode QuerySet.create () gebruiken of het model initialiseren als een normaal Pydantisch model en vervolgens de methode save () aanroepen om een nieuw model te maken.
!!!Tip Lees meer over de methode opslaan () in modellen-opslaan
# # update invoegen
Het is een proxy voor de save () of update (**kwargs) -methoden van het model. Als pk niet is ingesteld, wordt de save () -methode aangeroepen.
!!!Tip Lees meer over de upsert () methode in modellen-upsert
# # opslaan gerelateerd
De methode herhaalt alle relaties van het model dat de methode heeft aangeroepen en roept de upsert () -methode aan op elk niet-opgeslagen model.
!!!Tip Lees meer over de methode opslaan\ _ lated () in modellen-opslaan-lated
QuerysetProxy methode
Wanneer u rechtstreeks toegang krijgt tot de relevante ManyToMany-velden en ReverseForeignKey, wordt een lijst met gerelateerde modellen geretourneerd.
Maar het toont ook een subset van de QuerySet API, zodat u rechtstreeks vanuit het bovenliggende model kunt filteren, maken, gerelateerde modellen kunt selecteren, enz.
creëren
De creatiefunctie is identiek aan die hierboven, maar stelt u in staat om gerelateerde objecten te maken vanaf het andere uiteinde van de relatie.
Ga
Verwerven of creëren
Precies hetzelfde als de functie get\ _ or\ _ create hierboven, maar u kunt gerelateerde objecten opvragen of maken vanaf het andere uiteinde van de relatie.
Ga
Bijwerken of aanmaken
De update\ _ or\ _ create-functie is precies hetzelfde als hierboven, maar stelt u in staat om gerelateerde objecten vanaf het andere uiteinde van de relatie bij te werken of te maken.
Ga