既に DB にあるファイルにいくつかのモデルを含むモデル フォルダーがあります。別のファイル/モデルを追加しましたが、syncdb を実行しても DB に追加されません。manage.py validate を試しましたが、問題なく動作しています。コードも実行しましたが、「テーブルが存在しません」で保存しようとすると失敗します。
元の構造は次のようなものでした:
/models
-- __ init __ .py
-- file1.py
-- file2.py
そして__ init __ .py は次のようになりました:
from file1 import File1Model
from file2 import File2Model
file3.py
/models
-- __ init __ .py
-- file1.py
-- file2.py
-- file3.pyを追加しました
および変更された__ init __ .py
from file1 import File1Model
from file2 import File2Model
from file3 import File3Model
そして file3 の内容 (無実を保護するために名前が変更されている可能性がありますが、それ以外は正確なファイルです):
更新: id フィールドが自動的に追加された整数の主キー ID をいじっていた可能性があるため、主キーを追加しようとしました。いくつかのバリエーションも試しましたが、ダイスはありませんでした。
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
したがって、この例では、File1Model と File2Model は既に DB にあり、syncdb の後も DB に残ります。ただし、syncdb を再実行しても File3Model は追加されません。新しいモデルが追加されていない理由を突き止める方法はありますか??