【发布时间】:2016-04-28 08:49:42
【问题描述】:
我正在使用 python 2.7 和 django 1.7。
我有一个模型,我想返回要在模板中使用的字段,但是该字段可能为空白,这意味着当我尝试将条件语句放置到返回字段时收到此错误。
这是我的代码:
class ContactDetails(FillableModelWithLanguageVersion):
user = models.ForeignKey(User)
contact_details_phone = models.CharField(null=True, blank=True, max_length=30)
contact_details_mobile_phone = models.CharField(null=True, blank=True, max_length=30)
contact_details_email_address = models.EmailField(null=True, blank=True, max_length=250)
contact_details_linkedin_address = models.URLField(null=True, blank=True, max_length=250)
contact_details_facebook_address = models.URLField(null=True, blank=True, max_length=250)
contact_details_twitter_address = models.URLField(null=True, blank=True, max_length=250)
contact_details_timestamp_added = models.DateTimeField(auto_now_add=True, auto_now=False)
contact_details_timestamp_updated = models.DateTimeField(auto_now=True, auto_now_add=False)
def __unicode__(self):
return
if self.contact_details_mobile_phone:
truncatechars(self.contact_details_mobile_phone, 30)
elif self.contact_details_phone:
truncatechars(self.contact_details_phone, 30)
......
当我应用上面的 if elif 条件时,我收到以下错误:
强制转换为 Unicode:需要字符串或缓冲区,找到无类型
我已阅读此post 并应用了建议的修复程序,但这对我不起作用。这是我尝试过的一次尝试的示例
def __unicode__(self):
return
if self.contact_details_mobile_phone:
unicode(truncatechars(self.contact_details_mobile_phone, 30)) or u''
elif self.contact_details_phone:
unicode(truncatechars(self.contact_details_phone, 30)) or u''
.....
我继续收到相同的错误消息。我查过数据,数据是好的。我想知道我是否误用了 if elif 条件语法?
有人有我可以尝试的建议吗?
【问题讨论】:
-
您的
__unicode__方法立即返回 None,您需要将 return 语句移到 if/else 子句之后。 -
捂脸!是的,这很尴尬。感谢您指出我的愚蠢错误。我太专注于忽略返回的条件!
标签: python django unicode django-models django-templates