Django - dinamiskie modeļi

Satura rādītājs
In Django klases ir objekti Python, Tāpat kā jebkurš cits objekts, programmas izpildes laikā mēs varam sasniegt daudz interesantu efektu, pateicoties tam, ka mums ir viss Python funkcijas un metodes pieejams Django, mēs varam veidot klases, kas var ģenerēt dinamiskas klases.
Dinamiskas klases izveide var sniegt mums dažas priekšrocības, piemēram, modeļa izveidi no klases, tādējādi radot jaunas funkcijas.
Kā nodarbības darbojas sistēmā?
Lai nonāktu pie dinamisko modeļu ģenerēšanas, mums vispirms jāpārliecinās, ka saprotam, kā klases darbojas Python.
Mēs zinām, ka nodarbības notiek Python ir objekti, kurus var izveidot izpildlaika laikā, izmantojot iekšējo konstruktoru tips () un saņemt informāciju par to definēšanu.
Modeļi Django
Tā kā mēs zinām, kā nodarbības darbojas Python, mums jāuzsver, ka modeļi Django tās ir standarta Python klases, tikai tās ir deklarētas tādā veidā Django jūs varat tos izmantot, un tas, ka tās ir standarta klases, ļauj mums ģenerēt modeļus izpildlaika laikā.
Pirmā ieviešana
Apskatīsim šādu attēlu ar nelielu kodu:

Šeit mēs redzam, kā Django ietvars Mēs importējam modeļu moduli, pēc tam izveidojam metodi modeļu izveidei ar konstruktora tips () ko mēs minējām iepriekšējā apmācības punktā.
Tomēr šī vienkāršotā pieeja, ko esam pielietojuši, acīmredzot nedarbosies, problēma ir tā, ka Django sagaida, ka vārdnīca iekļaus moduli ar kodu.
Tagad apskatīsim kodu, ar kuru mēs atrisinām šo problēmu:
 def create_model (nosaukums, moduļa_ceļš): atgriešanās veids (nosaukums, (models.Model,), {'__module__': module_path}) 

Ar šo ieviešanu mēs esam novērsuši pirmo kļūdu, kas parādījās pirmajā piemērā.
Pievienojiet konfigurācijas opcijas
Mēs pabeigsim savu kodu dinamisko modeļu ģenerēšanai, ieskaitot iespēju, ka mēs varam iekļaut opcijas django konfigurācija, šim nolūkam mēs izmantosim Meta klase un mēs pārrakstīsim tā darbību, lai mūsu jaunā ieviešana ļautu mums no jauna definēt veidu, kā mēs rīkosimies ar opcijām, nākamajā attēlā redzēsim kodu, kas jau ir pabeigts, lai to panāktu:

Šajā kodā mēs esam skaidri mainījuši dažus sākotnējā koda aspektus, vispirms nosakot, ka moduļa ceļš ir šāds: Django.db.models, no šejienes mēs iegūsim sākotnējās definīcijas, kad tas notiks, mēs izveidosim vārdnīcu, kur mēs to piešķirsim __module__ mūsu definētā ceļa vērtība.
Tad mēs atkārtoti strādājam ar Meta klasi, tādējādi ietaupot iespējamās problēmas, par kurām mēs runājām šī punkta sākumā, un beidzot varam saukt savu tipa () metode, nododot nepieciešamos datus, nevis kļūdoties.
Ar šīm jaunajām zināšanām, kuras esam radījuši, mums jau ir stabila bāze, ar kuru mēs varam mijiedarboties ar kodu Django drošākā veidā, kas mūsu programmas izpildes laikā dod mums izdevīgu pozīciju mūsu lietojumprogrammu izstrādei un modeļu ģenerēšanai.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave