Django - Динамични модели

Съдържание
В Джанго класовете са обекти Python, Както всеки друг обект, можем да постигнем много интересни ефекти по време на изпълнение на програмата, благодарение на факта, че имаме всички Функции и методи на Python налични в Django, можем да създаваме класове, които могат да генерират динамични класове.
Създаването на динамичен клас може да ни осигури някои предимства, като например създаване на модел от клас, като по този начин генерира нови функционалности.
Как работят класовете в рамката?
За да стигнем до точката на генериране на динамични модели, първо трябва да се уверим, че разбираме как работят класовете в Python.
Знаем, че класовете в Python са обекти, които могат да бъдат създадени по време на изпълнение с помощта на вътрешния конструктор Тип () и получаване на подробности за това как те трябва да бъдат дефинирани.
Модели в Django
Тъй като знаем как работят класовете в Python, трябва да подчертаем, че модели в Django те са стандартни класове на Python, само че са декларирани по този начин Джанго можете да ги използвате и че те са стандартни класове ни позволява да генерираме модели по време на изпълнение.
Първо изпълнение
Нека видим следното изображение с малък код:

Тук виждаме как Рамка на Django Импортираме модула за модели, след което създаваме метод за създаване на моделите с тип конструктор () които споменахме в предишната точка на урока.
Въпреки това този опростен подход, който сме приложили, очевидно няма да работи, проблемът е, че Django очаква речникът да включва модул с неговия код.
Нека сега да видим код, с който решаваме този проблем:
 def create_model (name, module_path): тип връщане (name, (models.Model,), {'__module__': module_path}) 

С това изпълнение елиминирахме първата грешка, която се появи при първия пример.
Добавете опции за конфигурация
Ще завършим нашия код за генериране на динамични модели, включително възможността да включим опциите на конфигурация на django, за това ще използваме Мета клас и ще презапишем неговата работа, така че новата ни реализация да ни позволи да предефинираме начина, по който ще се справим с опциите, нека видим в следващото изображение кода, който вече е завършен, за да постигнем това:

В този код ясно сме променили някои аспекти на нашия първоначален код, започваме с дефиниране, че пътят на модула е: Django.db.models, от тук ще получим първоначалните дефиниции, след като това се случи, създаваме речник, където го присвояваме __модул__ стойността на пътя, който сме дефинирали.
След това преработваме мета класа, с това спестяваме възможните проблеми, които сме обсъждали в началото на тази точка, накрая можем да наречем нашия метод type (), предаване на необходимите данни, а не грешка.
С тези нови знания, които сме генерирали, вече имаме солидна база, с която можем да взаимодействаме с кода на Джанго по по -сигурен начин, което ни поставя в изгодна позиция за развитието на нашите приложения и генерирането на модели динамично по време на изпълнение на нашата програма.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave