【发布时间】:2021-07-04 12:59:48
【问题描述】:
我是 Python 和 Django 的新手。由于文档,我创建了数据库。我测试了一下,两个模型之间的多对一关系出现了错误。
这对我来说看起来很奇怪,因为它就像这些类之间的一对一关系,但如果我尝试添加很多,它会出错。还有其他类具有与多对一相同的关系。我创造了同样的方式,他们工作得很好。顺便说一句,我正在使用 sqlite。
class unites (models.Model):
id = models.IntegerField(primary_key=True)
unitename = models.CharField(max_length=128)
class intensivecare_forms (models.Model):
id = models.IntegerField(primary_key=True)
hospitals_id = models.ForeignKey(hospitals, on_delete=models.CASCADE)
formname = models.CharField(max_length=128)
data = models.JSONField()
unites_id = models.ForeignKey(unites, on_delete=models.CASCADE)
如果我尝试将第二种形式添加到单元中,则会出现此错误。
IntegrityError at /admin/LocalManager/intensivecare_forms/add/
UNIQUE constraint failed: LocalManager_intensivecare_forms.unites_id_id
Request Method: POST
Request URL: http://localhost:8000/admin/LocalManager/intensivecare_forms/add/
Django Version: 3.2.4
Exception Type: IntegrityError
Exception Value:
UNIQUE constraint failed: LocalManager_intensivecare_forms.unites_id_id
Exception Location: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py, line 423, in execute
Python Executable: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3
Python Version: 3.9.6
【问题讨论】:
-
看起来您将
unites_id从OneToOneField变成了ForeignKey,但没有(完全)通过该迁移迁移数据库。 -
你是对的。谢谢你。如果你愿意,可以写成答案。
标签: django django-models django-orm many-to-one