2009-08-27 11 views
11

Właśnie dowiedziałem się, że dzielenie klas modeli na różne pliki przerywa wiele wbudowanych funkcjonalności django.Dlaczego django wymusza stosowanie wszystkich klas modeli w models.py?

Pochodzę z tła Java. Tam nie jest akceptowana jako dobra praktyka przy pisaniu bardzo długich plików klasowych. Jednak wymuszenie przez django pojedynczego pliku dla wszystkich klas modeli prawdopodobnie spowoduje, że programista napisze bardzo długie pliki models.py. Utrudni to programistom zobaczenie organizacji całego modelu domeny.

Dlaczego więc django wymusza pojedynczy plik, aby zawierał wszystkie klasy domen?

Znalazłem a solution proposal dla tego problemu przez googling. Ale nie mogę być pewien, czy to będzie działać poprawnie. Czy sugerujesz to rozwiązanie?

+0

Twój link nie działa. Czy mógłbyś go zaktualizować? – Gabriel

+0

Możliwy duplikat [model.py robi się ogromny, jaki jest najlepszy sposób na jego rozbicie?] (Http://stackoverflow.com/questions/1160579/models-py-getting-huge-what-is-the-best -więcej-do-break-it-up) – Ajoy

Odpowiedz

7

Pojedyncza przestrzeń nazw: tak. Pojedynczy moduł: nie.

Twoje modele muszą być importowalne z przestrzeni nazw appname.models.

+0

Myślę, że ta odpowiedź jest prawdopodobnie poprawną odpowiedzią na to pytanie, ale z pewnością mogłaby zrobić to, aby być jaśniejszym. Myślę, że w zasadzie sprowadza się do 'appname.models' musi zaimportować wszystkie modele z innych modułów. Pomocne byłoby wyjaśnienie, dlaczego takie zachowanie jest udokumentowane. – SpoonMeiser

+0

Podobnie, dlaczego posiadanie 'appname.models' po prostu importuje moduły, które definiują inne modele, nie są wystarczające? Na pewno wywoła to niezbędną magię metaklasu? Jeśli nie, dlaczego? – SpoonMeiser

Powiązane problemy