두 모델 Article
및 ArticlePost
이 있습니다. Article
에 별도의 응용 프로그램에서 ArticlePost
외부 키로 참조 Article
하고 있습니다 :Django 외래 키가 관계의 기본 키를 인식하지 못함
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')),
],
),
]
내가 파이썬을 실행할 때 내가 얻을 마이그레이션 관리 :
====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)
내가 파이썬을 실행 한 다음과 같은 준다 makemigrations 관리 : 이상한 무엇
django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table "article"
내가 또한 참조 app1
다른 모델을 가지고있다 완벽하게 작동하는 외래 키가있는 기사를 포함합니다. 그러나이 경우 장고는 어떤 필드가 Article
의 기본 키인지 알지 못합니다. 유일한 차이점은 ArticlePost
이 Article
과 다른 응용 프로그램에 있다는 것입니다. 장고 1.10을 실행 중입니다. 누구나이 문제의 원인과 해결 방법을 알 수 있습니까?
또 다른 중요한 문제 일지 모르지만 해결 방법은 기사에서 primary_key
을 제거하고 Django 기본값 인 id
을 대신 사용하는 것일 수 있습니다. 이 경우, 다른 모델의 foreign key 참조를 app1 내의 Article으로 유지하면서 어떻게하는 것이 가장 좋습니까?
이 질문에 대한 대답은 아니지만 모델 필드에서'null = False'를 제거 할 수 있습니다. 기본적으로'null = False'입니다. 'True'로 설정한다면'null' 값을 추가하기 만하면됩니다. – jape