gpt4 book ai didi

django - 使反向 OneToOneField 在 django 中返回 None

转载 作者:行者123 更新时间:2023-12-02 06:56:29 26 4
gpt4 key购买 nike

我有一个具有以下模型的 Django 应用程序:

class A(models.Model):
...

我添加了一个与 A 具有 OneToOne 关系的新模型,如下所示:

class B(models.Model):
a = models.OneToOneField(A)

正如您所看到的,并非 A 的每个实例都应该与 B 存在关系。但是,当我尝试查询 A 是否存在相关的 B 模型时,例如:

instanceOfA.b

我得到:

DoesNotExist: B matching query does not exist.

有没有办法让此查询返回 None 而不向我的 A 模型添加属性。我知道this almost identical question但遗憾的是它没有得到接受的答案,现有的建议修改 A。

我目前正在使用:

 if hasattr(instanceOfA, b):
...

但是感觉不太干净。

最佳答案

您可以在 A 上设置一个方法,例如

class A(object):
# default stuff

def get_b(self):
return getattr(self, 'b', None)

或者更明确

class A(object):
def get_b(self):
try:
return self.b
except Foobar.DoesNotExist:
return None

这包含在 Django 功能票 here

关于django - 使反向 OneToOneField 在 django 中返回 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333155/

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