我现在正在使用 Django 1.6。
我有两个模型与 OneToOneField
相关联。
class A(models.Model):
pass
class B(models.Model):
ref_a = models.OneToOneField(related_name='ref_b', null=True)
首先看看我的代码,它指出了问题:
a1 = A.objects.create()
a2 = A.objects.create()
b1 = B.objects.create()
b2 = B.objects.create(ref_a=a2)
# then I call:
print(a1.ref_b) # DoesNotExist Exception raised
print(a2.ref_b) # returns b2
print(b1.ref_a) # returns None
print(b2.ref_a) # returns a2
现在的问题是,如果我想要检查一个
A
对象,来判断是否存在一个引用它的 B
对象。我应该怎么做?我尝试过的有效方法只有尝试并捕获异常,但是否有其他更好的方式呢?
我的努力:
1 - 下面的代码可以工作,但太丑了!
b = None
try:
b = a.ref_b
except:
pass
2 - 我还尝试查看a标签的属性,但是没有起作用:
b = a.ref_b if hasattr(a, 'ref_b') else None
你遇到同样的问题吗,朋友们?请指点我一条路,谢谢!
hasattr
在 Django 1.8.17 和 Python 2 上对我来说似乎工作正常。 - beruic