存在现在我使用Django 1.6检查一个OneToOne关系在Django
我有两个模型涉及用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 - 我也试图检查属性中,但不工作:
b = a.ref_b if hasattr(a, 'ref_b') else None
你达到了同样的问题,朋友们?请指点一下,谢谢!
我认为这会对你有效,请记住在2次以后改变你的班级名称。 b = hasattr(a_class_object,'b class')和a.ref_b或None。我正在使用它并为我工作。 – 2014-09-20 05:09:18
@Yogesh我不太清楚,请您提供更详细的解决方案? – 2014-09-20 06:40:23
'hasattr'似乎对Django 1.8.17和Python 2来说工作得很好。 – beruic 2017-06-22 08:53:10