Django - modele dynamiczne

Spisie treści
w Django klasy są obiektami Pyton, Jak każdy inny obiekt, możemy osiągnąć wiele ciekawych efektów w czasie wykonywania programu, dzięki temu, że mamy wszystkie Funkcje i metody Pythona dostępne w Django możemy budować klasy, które potrafią generować klasy dynamiczne.
Tworzenie dynamicznej klasy może dać nam pewne korzyści, takie jak tworzenie modelu z klasy, a tym samym generowanie nowych funkcjonalności.
Jak działają klasy w frameworku?
Aby dojść do punktu generowania modeli dynamicznych, musimy najpierw upewnić się, że rozumiemy, jak działają klasy w Pythonie.
Wiemy, że zajęcia w Pyton to obiekty, które można utworzyć w czasie wykonywania za pomocą wewnętrznego konstruktora rodzaj () i otrzymanie szczegółów, jak należy je zdefiniować.
Modelki w Django
Ponieważ wiemy, jak działają klasy w Pythonie, musimy podkreślić, że modelki w Django są to standardowe klasy Pythona, tylko są zadeklarowane w taki sposób, że Django możesz z nich korzystać, a to, że są to standardowe klasy, pozwala nam generować modele w czasie wykonywania.
Pierwsza realizacja
Zobaczmy następujący obrazek z małym kodem:

Tutaj widzimy, jak Framework Django Importujemy moduł modeli, a następnie tworzymy metodę tworzenia modeli za pomocą typ konstruktora () o których wspomnieliśmy w poprzednim punkcie samouczka.
Jednak to uproszczone podejście, które zastosowaliśmy, oczywiście nie zadziała, problem polega na tym, że Django oczekuje, że słownik będzie zawierał moduł wraz ze swoim kodem.
Zobaczmy teraz kod, za pomocą którego rozwiązujemy ten problem:
 def create_model (name, module_path): zwraca typ (name, (models.Model,), {'__module__': module_path}) 

Dzięki tej implementacji wyeliminowaliśmy pierwszy błąd, który pojawił się w pierwszym przykładzie.
Dodaj opcje konfiguracji
Zamierzamy uzupełnić nasz kod do generowania modeli dynamicznych, uwzględniając możliwość włączenia opcji konfiguracja django, do tego użyjemy Meta klasa i zamierzamy nadpisać jego działanie, aby nasza nowa implementacja pozwoliła nam przedefiniować sposób, w jaki będziemy obsługiwać opcje, zobaczmy na poniższym obrazku kod już ukończony, aby to osiągnąć:

W tym kodzie wyraźnie zmieniliśmy niektóre aspekty naszego początkowego kodu, zaczynamy od określenia, że ​​ścieżka modułu to: Django.db.models, stąd otrzymamy początkowe definicje, gdy to się stanie, tworzymy słownik, do którego przypisujemy __moduł__ wartość ścieżki, którą zdefiniowaliśmy.
Następnie przerabiamy klasę Meta, dzięki czemu zapisujemy możliwe problemy, które omawialiśmy na początku tego punktu, w końcu możemy nazwać naszą typ () metoda, przekazując niezbędne dane, a nie błąd.
Dzięki tej nowej wiedzy, którą wygenerowaliśmy, mamy już solidną podstawę, z którą możemy wchodzić w interakcje z kodem Django w bezpieczniejszy sposób, co stawia nas w korzystnej pozycji do rozwoju naszych aplikacji i dynamicznego generowania modeli w czasie wykonywania naszego programu.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave