【发布时间】:2022-10-24 04:14:24
【问题描述】:
在 Django 中使用多表继承时遇到问题,但我没有找到解决问题的方法。
我有这两个模型:
class Person(models.Model):
id = models.CharField(primary_key=True, max_length=12, default="")
name = models.CharField(max_length=12, default="")
birthday = models.DateField()
class Parent(Person):
work = models.CharField(max_length=70, default="")
spouce_field = models.OneToOneField(Person, on_delete=DO_NOTHING, related_name="spouce_field")
运行python3 manage.py makemigrations 时出现此错误:
ERRORS:
family.Parent.spouce_field: (models.E006) The field 'spouce_field' clashes with the field 'spouce_field' from model 'person.person'.
知道我在做什么错吗?
【问题讨论】:
-
您可能希望在 OneToOneField 上使用
symmetric=True。另外,当其他字段都没有时,为什么那个名为..._field? :) -
我认为对称只用于多对多,不是吗?将它放在 OneToOneField 上时,我收到一条错误消息
an unexpected keyword argument。 ..._field 只是我尝试更改字段的实际名称,我认为它可能会解决问题,但显然没有:) -
啊,我对
symmetric不好。无论哪种方式,你都需要spouse = models.OneToOneField("Person", related_name="reverse_spouse")或类似的,但它仍然很容易在数据模型方面变得非常奇怪,因为你可以想象有一个配偶链:)
标签: python django django-models one-to-one