假设我有这些模型:
class A(models.Model):
name = models.CharField(max_length=32)
b = models.ForeignKey("B", null=True)
def __unicode__(self):
return self.name
class B(models.Model):
name = models.CharField(max_length=32)
def __unicode__(self):
return self.name
而这个观点:
def DisplayIt(request):
html = ""
for a in A.objects.all():
html += "<input type='text' value='" + a.b.name + "' />"
只要每个 A 在字段 b 中都有对 B 的引用,这就可以正常工作。但是,我在 b 参考字段上有 null=True 。当 b 为 None 时,会抛出 NoneType 没有函数名的异常,这是完全可以预料的。
显然,我可以这样做:
def DisplayIt(request):
somestring = ""
for a in A.objects.all():
if a.b is not None:
somestring += a.b.name
但是,如果我不需要,我不想这样做。那么,如果b是None,有没有办法获得b.name或None,而不if a.b is not None:
在每个循环中放置一个?我的现实世界的例子要复杂得多,我正在创建一个临时对象以显示实际的数据库字段......我只想说我不想拥有所有这些 if 语句,并且不确定是否存在是到达那里的另一个内置功能。我还可以创建一个类方法来获取这些外部字段中的每一个(如果它们存在),或者如果它们不存在则为空白,但我也不确定这是否是最好的方法。