/ / Czy istnieje sposób, aby uzyskać syncdb, aby pobrać modele, które nie są w models.py? - django, django-syncdb

Czy istnieje sposób, aby uzyskać syncdb, aby pobrać modele, które nie są w models.py? - django, django-syncdb

Mam plik wypełniony modelami osadzonymi głęboko w mojej aplikacji, a nie w pliku models.py lub katalogu modeli.

Zasadniczo jest to plik wskazujący na tabele w starszej bazie danych, dlatego umieszczam go w oddzielnym pliku.

Jednak teraz, gdy próbuję skonfigurować wersję testową, muszę mieć możliwość tworzenia wszystkich tabel za pośrednictwem syncdb.

Czy jest jakiś sposób, aby to zrobić? Czy muszę utworzyć tabele ręcznie przy użyciu SQL?

Odpowiedzi:

2 dla odpowiedzi № 1

temp_app / models.py

from my.deep.in.code.modelfile import model1
from my.deep.in.code.modelfile import model2

Dodaj temp_app do zainstalowanych aplikacji (upewnij się, że masz również w tym.py w katalogu)

Uruchom Syncdb

Usuń temp_app z zainstalowanych aplikacji


1 dla odpowiedzi nr 2

czas uderzenia w czoło

Okay, więc ta część jest kluczowa: jeśli importujesz modele z innego miejsca w projekcie, a nie w zwykłych plikach models.py, upewnij się, że dodajesz:

class Meta:
app_label = "foo"

W przeciwnym razie modele będą ignorowane przez syncdb!

Próbowałem czegoś na wzór tego, co napisał Ted, ale z jakiegoś powodu nie było, dopóki nie dodałem app_label część, w której syncdb był w stanie stworzyć modele.