文字列が空であるかどうかを確認し、空である場合はデフォルトを出力する Python イディオムはありますか?
(UserProfileの関数のコンテキストはDjango__unicode__(self)
です-基本的に、存在する場合は名と姓を出力し、両方が存在しない場合はユーザー名を出力します)。
乾杯、ビクター
displayname = firstname+' '+lastname if firstname and lastname else username
displayname = firstname + lastname or username
名と姓の長さが 0 の空白文字列の場合に機能します
この問題は、次のようなテンプレートでより適切に処理できると思います。
{{ user.get_full_name|デフォルト:user.username }}
これは、Django に含まれている「デフォルト」フィルターを使用します。特に None 値に関心があるが、空白の値 (つまり '') を許可したい場合は、"default_if_none" フィルターもあります。「デフォルト」フィルターは、None 値と '' 値の両方でトリガーされます。
Django ドキュメントへのリンクは次のとおりです: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#default
わかりました、私はあなたが__unicode__()
方法を意味していると思います。次のようなことを試してください(テストされていませんが、ほぼ正しいです):
from django.utils.encoding import smart_unicode
def __unicode__(self):
u = self.user
if u.firstname and u.lastname:
return u"%s %s" % (u.firstname, u.lastname)
return smart_unicode(u.username)
Django コードではなく、Python のイディオムを求めていることに気付きました。しかたがない。
何かのようなもの:
name = data.Name or "Default Name"
私のスキーマではNone
姓または名が設定されていないため、フレデリコの答えは機能しません。そう:
print ("%s %s" % (firstname, lastname)
if not (firstname and lastname)
else username )