Mam folder modeli, który ma kilka modeli w plikach, które są już w DB. Właśnie dodałem kolejny plik/model, ale nie jest on dodawany do bazy danych, gdy uruchamiam syncdb. Próbowałem sprawdzać poprawność manage.py i działa poprawnie. Uruchomiłem również kod, który kończy się niepowodzeniem, gdy próbuje zapisać, gdy "tabela nie istnieje".Modele Django nie są wyświetlane w DB po Syncdb
oryginalna struktura była tak:
/Modele
- __ init, __ .py
- file1.py
- file2.py
i __ init, __ .py wyglądało:
from file1 import File1Model
from file2 import File2Model
dodałem file3.py
/modeli
- __ init, __ .py
- file1.py
- file2.py
- file3.py
i modyfikowane __ init, __ .py
from file1 import File1Model
from file2 import File2Model
from file3 import File3Model
Zawartość pliku3 (nazwy mogły zostać zmienione w celu ochrony niewinnych, ale poza tym jest to dokładny plik):
AKTUALIZACJA: próbowano po prostu dodać klucz podstawowy, ponieważ pole identyfikatora mogło być mieszane z automatycznie dodanymi Liczba całkowita klucza podstawowego. Wypróbowałem również kilka odmian, ale bez kości.
from django.db import models
from django.contrib.auth.models import User
class File3Model(models.Model):
user = models.OneToOneField(User)
token = models.CharField(max_length=255, blank=False, null=False)
id = models.CharField(primary_key=True, max_length=255)
class Admin:
pass
class Meta:
app_label = 'coolabel'
def __unicode__(self):
return self.user.username
@staticmethod
def getinstance(user, token, id):
try:
instance = File3Model.objects.get(pk=id)
if instance.token != token:
instance.token = token
instance.save()
return instance
except:
pass
instance = File3Model()
instance.user = user
instance.token = token
instance.id = id
instance.save()
return instance
Tak więc w tym przykładzie File1Model i File2Model są już w DB i pozostają w DB po syncdb. Jednak File3Model nie jest dodawany nawet po ponownym uruchomieniu syncdb. Czy istnieje sposób, aby dowiedzieć się, dlaczego nowy model nie jest dodawany?
Czy wypróbowałeś 'syncdb --all'? – sultan
próbowałem, ale wciąż nie działa. – ntrrobng