Django - Database

Inhoudsopgave
Zodra het model en alles wat ermee te maken heeft, is vastgesteld, is het volgende aspect waarmee rekening moet worden gehouden de interactie van de verschillende velden met de database.
Als we het hebben over het gedrag van de database, bedoelen we de manier waarop we moeten zien hoe de data wordt voorbereid om opgeslagen te worden, de manier waarop we vergelijkingen maken met de datatypes van Python waarmee hun waarden worden weergegeven in onze applicatie in Django.
db_type (zelf, verbinding)
Deze methode wordt zelden overschreven door toepassingsklassen en subklassen, het retourneert een tekenreeks met specifieke databasegegevens die bepaalt hoe de kolommen van bepaalde velden worden gemaakt.
Het is belangrijk om te vermelden dat de waarde die met deze methode wordt geretourneerd, specifiek is voor de backend database die in de toepassing wordt gebruikt, dus als we besluiten deze te gebruiken in projecten met verschillende database-backends, moeten we de waarde van de verbinding verkrijgen met connection.settings_dict ['ENGINE']
Laten we in de volgende afbeelding zien hoe we het basisgebruik van deze methode in code kunnen vertalen:

Bij het analyseren van de code zien we dat als de database-engine is postgreSQL we gaan een waarde voor het veld retourneren, anders dan als het een andere engine is, zoals: MySQL, dus we kunnen een klein voorbeeld zien van het nut van deze methode.
get_prep_value (zelf, waarde)
Dit is een methode die als basis dient voor andere methoden die de gegevens moeten voorbereiden voor gebruik door de database.
In de meeste gevallen is de conversie van python objecten naar eenvoudigere gegevens die naar de database kunnen worden overgebracht, vormt geen groot probleem en we kunnen de standaardconversie gebruiken, maar wanneer we complexere conversies willen maken, zoals een datumtype, kunnen we deze methode gebruiken om dat werk te doen, in de volgende afbeelding hebben we een manier om dit te bereiken die we hebben beschreven.

In het voorbeeld bij het definiëren van een veldtype DuurVeld we overschrijven de methode get_prep_value () zodat het het datumobject neemt en het omzet in decimale waarden om het zonder verdere complicaties in de database te kunnen gebruiken.
get_db_prep_value (zelf, waarde, verbinding, voorbereid = False)
Er zijn gevallen waarin onze applicatie in meer dan één database-engine draait, deze methode stelt ons in staat om de gegevens voor te bereiden op basis van de engine, dankzij de connection.settings_dict ['ENGINE'] we kunnen verschillende gevallen opnemen, afhankelijk van de motor.
Een voorbeeld is wanneer we met postgreSQL werken, deze engine kan de datumobjecten direct afhandelen, dus als we detecteren dat het het is, kunnen we de waarde direct doorgeven, laten we in het onderstaande voorbeeld zien hoe we deze methode en de vorige combineren om een robuuster resultaat bereiken:

Hiermee sluiten we de tutorial af, wetende dat we het gedrag van de database kunnen controleren in Django met behulp van de methoden voor het voorbereiden van de gegevens van de velden van een model.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven
wave wave wave wave wave