これらのモデルがあるとしましょう:
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
しかし、必要がなければ、これはしたくありません。if a.b is not None:
では、各ループに an を入れずに、b が None の場合に b.name または None を取得する方法はありますか? 私の実際の例はもっと複雑で、実際のデータベース フィールドから表示用の一時オブジェクトを作成しています。そこに到達するための別の組み込み関数でした。これらの外部フィールドが存在する場合はそれらを取得し、存在しない場合は空白にするクラス メソッドを作成することもできますが、これが最善の方法であるかどうかもわかりません。