【问题标题】:In admin I see "App_name object" but not actual object name在管理员中,我看到“App_name 对象”,但没有看到实际的对象名称
【发布时间】:2013-09-14 16:00:54
【问题描述】:

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

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

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

谢谢;)

已编辑:添加我的 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 更新到最新版本。如果您正在使用 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): 问题 = 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.

【问题讨论】:

    标签: django


    【解决方案1】:

    您尚未定义(或错误地)您的 __unicode__() 模型的 __unicode__() 方法:

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

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

    仅供参考,引用自docs

    __unicode__() 方法会在您调用 unicode() 目的。 Django 使用unicode(obj)(或相关函数,str(obj)) 在许多地方。 最值得注意的是,在 Django 管理站点 并作为插入模板时的值 显示一个对象。因此,你应该总是返回一个不错的, 来自__unicode__() 的模型的人类可读表示 方法。

    【讨论】:

    • @princas11 你能显示你的models.py吗? (将其包含在问题中)
    • 我在第一篇文章中添加了我的 models.py。
    • 可能是陈旧 pyc 文件的问题。删除 pyc 文件,然后重试。
    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多