djangomodelsyncdb

Django Models not Showing Up in DB after syncdb


I have a models folder that has a few models in files that are already in the DB. I have just added another file/model but it is not being added to the DB when I run syncdb. I've tried manage.py validate and it is running fine. I have also run the code and it only fails when it tries to save with "table does not exist".

the original structure was like this:
/models
-- __init__.py
-- file1.py
-- file2.py

and __init__.py looked like:

from file1 import File1Model
from file2 import File2Model

I added file3.py
/models
-- __init__.py
-- file1.py
-- file2.py
-- file3.py

and modified __init__.py

from file1 import File1Model
from file2 import File2Model
from file3 import File3Model

And the contents of file3 (names may have been changed to protect the innocent, but besides that its the exact file):
UPDATE: just tried adding a primary key since the id field may have been messing with the automatically added integer primary key id. Also tried a few variations but no dice.

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

So in this example, File1Model and File2Model are already in the DB and remain in the DB after syncdb. However, File3Model is not added even after rerunning syncdb. Is there any way to figure out why the new model isn't being added??


Solution

  • BOOM!

    I was using a different app_label for the new model but it has to be the same across the model group.

    The other models labels were "mediocrelabel" and my new model had the label "coolabel". I changed the new model's label to "mediocrelabel" and now they are being added to the DB correctly.

    Thanks for your help, folks!