我有两个模型,Article
和ArticlePost
。ArticlePost
引用Article
作为外键,并在单独的应用程序中Article
:
====app1/models.py:======
class Article(models.Model):
name = models.CharField(max_length=200, primary_key=True)
====app2/models.py======
class ArticlePost(models.Model):
article = models.ForeignKey(Article, null=False, db_index=True)
created_at = models.DateTimeField(auto_now_add=True)
comment = models.TextField(blank=True)
我已经运行了 python manage makemigrations,它给出了以下内容:
operations = [
migrations.CreateModel(
name='ArticlePost',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('comment', models.TextField(blank=True)),
('article', models.ForeignKey(to='app2.Article')),
],
),
]
但是,当我运行 python manage migrate 时,我得到:
django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table "article"
奇怪的是,我有另一个模型,app1
其中也引用了具有完美工作的外键的文章。但是在这种情况下,Django 似乎不知道哪个字段是Article
. 唯一的区别是ArticlePost
在不同的应用程序中Article
。我正在运行 Django 1.10。有谁知道是什么原因造成的以及如何解决?
或者,如果这只是一个关键问题,也许解决方案是删除primary_key
on Article 并使用 Django 默认值id
。在这种情况下,如何最好地做到这一点,同时保持从其他模型到 app1 中文章的外键引用?