在django工作。
为配置文件模型创建unicode输出,其中用户姓氏是可选的。
Desired:
John D. if last name
John if not last name
Acceptable (though not ideal):
John . if not last name
当前代码:
def __unicode__(self):
return "%s %s." % (self.user.first_name, self.user.last_name[0])
这通常用于获得可接受的结果,但在last_name ==“”时失败。
是否有单行python成语来生成我想要的输出?我已经搜索了谷歌和堆栈溢出的六个搜索条件,并已经出现了鹅蛋。
答案 0 :(得分:2)
怎么样:
return self.user.first_name + (' %s.' % self.user.last_name[0] if self.user.last_name else '')
以上是作为一个单行写的,因为你特意要求一个。我个人会把它分成两行:
first, last = self.user.first_name, self.user.last_name
return first + (' %s.' % last[0] if last else '')
答案 1 :(得分:2)
也许你可以使用这样的东西:
def __unicode__(self):
return "%s%s" % (self.user.first_name,
" %s." % self.user.last_name[0]
if self.user.last_name
else "")
答案 2 :(得分:2)
轻松出路:
def format_name(fname, lname):
if lname:
return "{0} {1}.".format(fname, lname)
return fname
然后只是return format_name(self.user.first_name, self.user.last_name)
中的__unicode__
。这是重要的一行(在您的模型中),并且可读取。