Tengo una carpeta de modelos que tiene algunos modelos en archivos que ya están en la base de datos. Acabo de agregar otro archivo/modelo pero no se agrega a la base de datos cuando ejecuto syncdb. He intentado con manage.py validate y funciona bien. También he ejecutado el código y solo falla cuando intenta guardar con "table does not exists".Modelos de Django que no aparecen en DB después de syncdb
la estructura original fue así:
/modelos
- __ __ init .py
- file1.py
- file2.py
y __ init __ .py se parecía a:
from file1 import File1Model
from file2 import File2Model
I añadió file3.py
/modelos
- __ init __ .py
- file1.py
- file2.py
- file3.py
y modificar __ init __ .py
from file1 import File1Model
from file2 import File2Model
from file3 import File3Model
Y el contenido del archivo3 (los nombres pueden haber sido cambiados para proteger a los inocentes, pero además de eso es el archivo exacto):
ACTUALIZACIÓN: acabo de intentar agregar una clave principal ya que el campo de id puede haber estado jugando entero de la clave principal id. También probé algunas variaciones pero no dados.
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
lo tanto, en este ejemplo, File1Model y File2Model ya están en la base de datos y se mantienen en el PP después de syncdb. Sin embargo, File3Model no se agrega incluso después de volver a ejecutar syncdb. ¿Hay alguna manera de descubrir por qué el nuevo modelo no se está agregando?
¿Has probado 'syncdb --all'? – sultan
acaba de probar, pero todavía no está funcionando. – ntrrobng