强制到 Unicode:需要字符串或缓冲区,找不到 NoneType



我正在使用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:需要字符串或缓冲区,找不到 NoneType

我已经阅读了这篇文章并应用了建议的修复程序,但这对我不起作用。这是我尝试过的一次尝试的示例

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 条件语法?

有人有我可以尝试的建议吗?

你只通过执行return从函数中返回了None。你的函数只是在执行if else代码块之前早些时候返回的(也许你是一个 ruby 开发人员或其他什么,但 python 不是那样工作的)。

最新更新