Django - Modele dinamice

Cuprins
În Django clasele sunt obiecte Piton, Ca orice alt obiect, putem obține multe efecte interesante în momentul executării programului, datorită faptului că avem toate Funcții și metode Python disponibil în Django putem construi clase care pot genera clase dinamice.
Crearea unei clase dinamice ne poate oferi unele avantaje, cum ar fi crearea unui model dintr-o clasă, generând astfel noi funcționalități.
Cum funcționează cursurile în cadrul?
Pentru a ajunge la punctul de a genera modele dinamice, trebuie mai întâi să ne asigurăm că înțelegem cum funcționează clasele în Python.
Știm că orele din Piton sunt obiecte care pot fi create la runtime folosind constructorul intern tip () și primirea detaliilor despre modul în care acestea ar trebui definite.
Modele în Django
Deoarece știm cum funcționează clasele în Python, trebuie să subliniem că modele în Django sunt clase standard Python, doar că sunt declarate în felul în care Django le puteți folosi și că sunt clase standard ne permite să generăm modele în timpul rulării.
Prima implementare
Să vedem următoarea imagine cu un cod mic:

Aici vedem cum Cadrul Django Importăm modulul de modele, apoi creăm o metodă pentru a crea modelele cu tip constructor () pe care le menționasem în punctul anterior al tutorialului.
Cu toate acestea, această abordare simplistă pe care am aplicat-o, evident, nu va funcționa, problema este că Django se așteaptă ca un dicționar să includă un modul cu codul său.
Să vedem acum un cod cu care rezolvăm această problemă:
 def create_model (name, module_path): return type (nume, (models.Model,), {'__module__': module_path}) 

Cu această implementare am eliminat prima eroare care a apărut cu primul exemplu.
Adăugați opțiuni de configurare
Vom completa codul nostru pentru generarea de modele dinamice, inclusiv posibilitatea de a include opțiunile configurația django, pentru aceasta vom folosi Clasa meta și vom suprascrie funcționarea sa, astfel încât noua noastră implementare să ne permită să redefinim modul în care vom gestiona opțiunile, să vedem în imaginea următoare codul deja finalizat pentru a realiza acest lucru:

În acest cod am schimbat în mod clar unele aspecte ale codului nostru inițial, începem prin a defini că calea modulului este: Django.db.modele, de aici vom obține definițiile inițiale, odată ce acest lucru se întâmplă, creăm un dicționar unde îl atribuim __modul__ valoarea căii pe care am definit-o.
Apoi re-lucrăm clasa Meta, cu aceasta salvăm posibilele probleme pe care le-am discutat la începutul acestui punct, în cele din urmă le putem numi metoda type (), transmiterea datelor necesare și nu eroare.
Cu această nouă cunoaștere pe care am generat-o, avem deja o bază solidă cu care putem interacționa cu codul Django într-un mod mai sigur, ceea ce ne pune într-o poziție avantajoasă pentru dezvoltarea aplicațiilor noastre și generarea de modele dinamic în timpul execuției programului nostru.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv
wave wave wave wave wave