为什么我有错误"列" content_type_id"不存在"在Django?

时间:2017-06-30 13:00:18

标签: django django-models

我试图创建一个Comment类,以便我可以用它来评论任何类型的对象。我在这里找到了一个解决方案:https://docs.djangoproject.com/en/1.11/ref/contrib/contenttypes/ 但是,它没有用。 (我必须承认,我并不了解他们使用的content_type和object_id的所有内容,我只是从他们的页面复制了代码)

这是我的模特:

class Comment(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')
    author = models.CharField(max_length=200, default="userPasDef")
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)

    def publish(self):
        self.created_date = timezone.now()
        self.author = "userPasDef"
        self.save()

    def __str__(self):
        return self.text

这是错误:

追踪(最近一次通话):   文件" /home/computer/Documents/virtualenv/lib/python3.5/site-packages/django/db/backends/utils.py" ;,第65行,执行     return self.cursor.execute(sql,params) psycopg2.ProgrammingError:column" content_type_id"关系" Application_comment"不存在 第1行:插入" Application_comment" (" content_type_id"," objec ...

但我没有" content_type_id"在我的模特中...... 我可以运行makemigrations,migrate和runserver,但每次我尝试在我的网站上发布评论时都会出现此错误。 什么可能导致这个问题?

谢谢! :)

编辑: "显示python manage.py showmigrations"

的输出

应用  [X] 0001_initial

(我尝试删除所有数据库和以前的迁移以重置它们但它没有解决问题)

"以及包含评论"

的应用的所有迁移文件
        migrations.CreateModel(
        name='Comment',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('object_id', models.PositiveIntegerField()),
            ('author', models.CharField(default='userPasDef', max_length=200)),
            ('text', models.TextField()),
            ('created_date', models.DateTimeField(default=django.utils.timezone.now)),
            ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
        ],
    ),

1 个答案:

答案 0 :(得分:1)

所以,对于那些与我有同样问题的人来说,问题不在我的模型中,而在我的数据库中。我删掉了postgre中的所有表格,再次进行了迁移,一切正常。我真的不应该删除所有这些迁移文件(我不知道它们是如此重要)。没有它们,Django就会丢失,因为他无法记住数据库的当前状态。 :)