【问题标题】:TypeError with string formatting when using __unicode__() in model for Django app在 Django 应用程序的模型中使用 __unicode__() 时出现字符串格式的 TypeError
【发布时间】:2015-07-14 16:09:50
【问题描述】:

我正在编写关于创建 Django 项目和应用程序的第二个教程。我完成的第一个教程是在 djangoproject.com 上,我创建了广受欢迎的“投票”应用程序。第一个教程指定“将__str__() 方法添加到模型中很重要”,但它也指出“在Python 2 上,您应该定义返回unicode 值的__unicode__() 方法。”我正在运行 Python 2.7.9,并且在第一个教程中成功使用了 __unicode__()。我目前正在处理的第二个教程中的字符串格式存在问题,该教程位于 Effectivedjango.com。

这是第一个教程的工作原理:

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def __unicode__(self):
        return u'%s' % self.question_text

这是我在第二个教程中尝试过的,但没有成功:

class Contact(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    email = models.EmailField()
    def __unicode__(self):
        return u'%s %s' % (self.first_name, self.last_name)

我也尝试过return u'%s' + ' ' + '%s' % (self.first_name, self.last_name)return u'%s' + u' ' + u'%s' % (self.first_name, self.last_name)

当我尝试使用上述任何尝试在我的数据库中创建Question 对象时,我不断收到TypeError: not all arguments converted during string formatting。我对字符串格式做错了什么?我对 Python 非常陌生,并且在编码期间(以防你看不出来),所以在给出任何答案时请“慢慢说清楚”和“对我放轻松”。谢谢!

【问题讨论】:

  • 我有点困惑。您认为 Contact 类有问题,但是当您尝试创建 Question 对象时,它会给您类型错误?另外,您是如何创建问题对象的?
  • 我在 Windows 命令提示符中使用 python shell 来创建我的问题和联系人对象。有趣的是,我今天第一次尝试再次创建一个联系人对象,它工作正常。现在我无法复制昨晚一直给我 TypeError 的任何事情。无论如何感谢@Cheng 的帮助,但现在看起来一切正常。
  • 很高兴听到它现在可以工作了:D

标签: python django unicode models


【解决方案1】:

嗯。这似乎看起来正确。是否有可能您的数据库中存储了一些不包含 first_name 的 Contact() 条目或

【讨论】:

    猜你喜欢
    • 2015-04-15
    • 2011-03-07
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2015-06-07
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多