3

所以,我通过这个http://mherman.org/blog/2012/12/30/django-basics/教程学习了 django,我遇到了一个问题。

我在数据库中添加了几本书,但在管理站点中我只看到“App_name 对象”。在我的情况下,我只看到单词列表“书籍对象”、“书籍对象”、“书籍对象”,而实际上我应该看到“战争与和平”、“美丽新世界”、“杀死一只知更鸟”。

那么,你知道我的应用程序出了什么问题吗?

谢谢 ;)

编辑:添加我的 models.py 代码

from django.db import models

class Books(models.Model):
    title = models.CharField(max_length=150)
    author = models.CharField(max_length=100)
    read = models.CharField(max_length=3)

    def __unicode__(self):
        return self.title + " / " + self.author + " / " + self.read

我找到了答案:

Django 1.5 对 Python 3 具有实验性支持,但 Django 1.5 教程是为 Python 2.X 编写的:

本教程是为 Django 1.5 和 Python 2.x 编写的。如果 Django 版本不匹配,您可以参考您的 Django 版本的教程或将 Django 更新到最新版本。如果您使用的是 Python 3.x,请注意您的代码可能需要与教程中的不同,并且只有在您知道自己在使用 Python 3.x 做什么的情况下才能继续使用本教程。

在 Python 3 中,您应该定义str方法而不是 unicode方法。有一个装饰器 python_2_unicode_compatible 可以帮助您编写适用于 Python 2 和 3 的代码。

@python_2_unicode_compatible class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('发布日期')

def __str__(self):
    return self.question For more information see the section str and unicode methods in the Porting to Python 3 docs.
4

1 回答 1

1

您还没有定义(或做错了)模型__unicode__()的方法Books

5.接下来,打开你的models.py文件并添加这两行代码——

 def __unicode__(self):
     return self.title + " / " + self.author + " / " + self.read

仅供参考,引用自文档

__unicode__()每当您在对象上调用 unicode() 时都会调用该方法。Django在很多地方使用unicode(obj)(或相关函数)。最值得注意的是,在 Django 管理站点中显示对象,并在显示对象时作为插入模板的值。 因此,您应该始终从该方法返回一个很好的、人类可读的模型表示。str(obj)__unicode__()

于 2013-09-10T19:41:57.477 回答