Django Fixture中的无效模型标识符

0 投票
1 回答
7364 浏览
提问于 2025-04-18 16:30

我的 Django 数据库初始化文件里包含以下数据:

- model: CkProject.NotificationType
  pk: 1
  fields:
    name: comment
    message: commented on your project

当我运行 python manage.py syncdb 时,它在加载这些数据时出现了错误:

raise base.DeserializationError("Invalid model identifier:
'%s'" % model_identifier)
django.core.serializers.base.DeserializationError: Problem installing fixture
'....../source/apps/CkProject/fixtures/initial_data.yaml': 
Invalid model identifier: 'CkProject.NotificationType'

我甚至尝试用一个 JSON 文件替代 YAML 文件,但返回的错误还是一样。

更新:这是我的 models.py 文件,位于 apps/Notification/models.py 里。

class NotificationType(models.Model):
    class Meta:
        db_table = 'CkProject_notificationtype'

    name = models.CharField(max_length=50)
    message = models.TextField()

    def __unicode__(self):
        return self.name

1 个回答

4

你可能把你的模型从 apps/CKProject/models.py 移动到了 apps/Notification/models.py,所以它的应用标签(app_label)发生了变化,现在Django把这个模型识别为 Notification.NotificationType。你需要相应地更新你的数据文件。

另外,你也可以在NotificationType的Meta对象中添加 app_label = 'CKProject'(详细信息可以查看:app_label),这样Django就会再次把它识别为 CKProject.NotificationType

撰写回答