Piszę moje pierwsze kilka modeli Django i chciałem rzucić okiem na klasę podstawową, którą rozszerzają wszystkie modele (przykład: "Ankieta klasy (model.Model"), ale nie mogłem znaleźć klasy bazowej Modelu.Sprawdziłem source on github i kiedy przeglądałem katalog django.db.models byłem zaskoczony, że nie znalazłem pliku "Model.py", na który mogłem spojrzeć, czy ten plik jest generowany? Czy model klasy żyje gdzieś indziej? Czy jest tam jakaś magia pakietów Pythona? że nie jestem zaznajomiony z?Gdzie jest Model.py w kodzie źródłowym Django?
Odpowiedz
Jak już zauważono, Python nie jest Javą. W Pythonie nic nie mówi, że klasa musi żyć w pliku o tej samej nazwie co klasa.
Jak San4ez zaznacza, klasa mieszka w django.db.models.base
Model
, i jest importowany do pliku __init__.py
w tym katalogu, tak, że może być odniesione bezpośrednio jako models.Model
. To nie jest żadna magia, tylko normalny, idiomatyczny Python.
Jednak gdy spojrzysz na kod samej klasy, okaże się, że składa się ona ze sporej ilości magii w Pythonie, w szczególności wokół metaclasses. Ale to inne pytanie.
W https://github.com/django/django/blob/master/django/db/models/__init__.py
wygląd
from django.db.models.base import Model
Więc Model
klasa jest tam opisane https://github.com/django/django/blob/master/django/db/models/base.py
Dosłownie można importować Model ten sposób from django.db.models.base import Model
do projektu. Ale twórcy django postanowili ukryć niektóre klasy usług, zaimportować niektóre do pakietu django.db.models
i zaoferować krótszy import.
- 1. Python/Django - Unikaj zapisywania haseł w kodzie źródłowym
- 2. Dobry projekt django o otwartym kodzie źródłowym do nauki
- 3. Kiedy i gdzie jest łańcuch inicjalizowany/przechowywany w kodzie źródłowym Java?
- 4. gdzie jest obiekt "okna" zdefiniowany lub utworzony w kodzie źródłowym firefox
- 5. Jakie jest znaczenie DISALLOW_FUN w kodzie źródłowym Androida?
- 6. Głębokie nurkowanie w otwartym kodzie źródłowym
- 7. Budowanie konkretnego modułu w kodzie źródłowym Androida
- 8. Sieć społeczna o otwartym kodzie źródłowym
- 9. Gdzie jest logika błędna w moim kodzie?
- 10. Gdzie definiujesz formularze django?
- 11. Najlepsze projekty WPF o otwartym kodzie źródłowym
- 12. Mechanizm rozpoznawania mowy o otwartym kodzie źródłowym
- 13. Przechowywanie TODO w trybie org w kodzie źródłowym
- 14. Najlepszy sposób na złamanie długich ciągów w kodzie źródłowym C#
- 15. Dlaczego WebView w kodzie źródłowym SDK rozszerza MockView?
- 16. Czy można zapobiec wyświetlaniu standardowych komentarzy HTML w kodzie źródłowym?
- 17. w kodzie źródłowym kodu, jak używać KeyAttribute na wielu kolumnach
- 18. Wtyczka Delphi do wklejania stałych tekstowych w kodzie źródłowym?
- 19. Aplikacje Java EE w świecie rzeczywistym o otwartym kodzie źródłowym
- 20. Klon Twittera (w Ruby/Pythonie) o otwartym kodzie źródłowym
- 21. Jak odczytać zmienną CMake w kodzie źródłowym C++
- 22. "Mechanicznie generowane" pliki źródłowe java w kodzie źródłowym Java
- 23. Jak uruchomić Wiosna w kodzie źródłowym Action Wydanie trzecie
- 24. Jak komentować atrybut znacznika HTML w kodzie źródłowym HTML?
- 25. Autouzupełnianie DrRacket nie widzi funkcji zdefiniowanych w moim kodzie źródłowym
- 26. Xcode 7 Err "Redaktor zastępczy w kodzie źródłowym"
- 27. Gdzie jest wąskie gardło wydajności w tym kodzie Spark/Scala?
- 28. instantiateViewControllerWithIdentifier, ale gdzie jest identyfikator w kodzie XCode 4.5?
- 29. Co to jest błąd Uri w .NET, o którym wspomina Ayende w kodzie źródłowym Raccoon Blog?
- 30. Gdzie używasz generatorów funkcji w kodzie Pythona?
Znalazłem go z twoją pomocą (nie, dzięki wyszukiwarce Github). Prowadzi mnie to do dość filozoficznych pytań na temat konwencji/stylu/reguł Pythona, jednak jest to pytanie do innego posta (i po przeprowadzeniu niewielkich badań). Dzięki! –