kir*_*chi 5 django django-models
我有一个带有以下型号的django应用程序:
class A(models.Model):
...
Run Code Online (Sandbox Code Playgroud)
我添加了一个与A具有OneToOne关系的新模型,如下所示:
class B(models.Model):
a = models.OneToOneField(A)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,并非A的每个实例都应该与B有关系.但是,当我尝试查询A是否存在相关的B模型时,如:
instanceOfA.b
Run Code Online (Sandbox Code Playgroud)
我明白了:
DoesNotExist: B matching query does not exist.
Run Code Online (Sandbox Code Playgroud)
有没有办法让我可以在None不向A模型添加属性的情况下返回此查询.我知道这个几乎完全相同的问题,但遗憾的是它没有被接受的答案,现有的答案建议修改A.
我目前正在使用:
if hasattr(instanceOfA, b):
...
Run Code Online (Sandbox Code Playgroud)
但它感觉不是很干净.
你可以在 A 上设置一个方法,例如
class A(object):
# default stuff
def get_b(self):
return getattr(self, 'b', None)
Run Code Online (Sandbox Code Playgroud)
或者更明确
class A(object):
def get_b(self):
try:
return self.b
except Foobar.DoesNotExist:
return None
Run Code Online (Sandbox Code Playgroud)
此处包含 Django 功能票证
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |