gpt4 book ai didi

具有多个相同的 Django OneToOneField --related_name

转载 作者:行者123 更新时间:2023-12-04 01:13:52 26 4
gpt4 key购买 nike

抱歉没有描述性的标题,但我真的不知道如何措辞。

假设我有两个模型:

class Person(...):
name = ... #have an attribute

class Family(...):
mum = models.OneToOneField(Person)
dad = models.OneToOneField(Person)

当我有一个家庭包含 mumdad , 我想打电话 dad.family会给我家人 dad是在。但是,我收到一条错误消息,说这与 mum 冲突。属性。这里的解决方案是使用 relative_name s。但是从 mum给家人打电话除了来自 dad 之外的其他东西对我来说感觉很奇怪。为什么我不能直接打电话 dad.family ?有人可以向我解释这里到底发生了什么冲突吗?

谢谢!

最佳答案

问题是,给定您的模型,Person可能是 mum给一个家庭,还有一个 dad到另一个家庭。

在这种情况下,这样的查询将是模棱两可的:

pat = Person.objects.get(name='Pat')
family1.mum = pat
family1.save()

family2.dad = pat
family2.save()

pat.family # Which family do we want?

出于这个原因,您需要为每个定义一个反向关系名称(例如,family_as_mum 和 family_as_dad)

关于具有多个相同的 Django OneToOneField --related_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com