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:
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.
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: