【问题标题】:Django admin - foreign key "field object" listDjango admin - 外键“字段对象”列表
【发布时间】:2013-01-20 21:05:42
【问题描述】:

我有以下代码:

class Actor(models.Model):
    first_name = models.CharField('First Name', max_length=135)
    last_name = models.CharField('Last Name', max_length=135)

    class Meta:
        db_table = u'actor'

    def actorname(self):
        return u'%s %s' %(self.first_name, self.last_name)

    def __unicode__(self):
        return str(self.actorname)

我看不出我的代码有什么问题,但在 django 管理员中它显示为 Actor Object

我做错了什么?

谢谢。

【问题讨论】:

  • 您不需要将actorname 设置为属性以在__unicode__ 中以这种方式访问​​它吗?
  • 我不这么认为,如果我在first_name 上尝试,也会出现同样的问题。

标签: python django django-models


【解决方案1】:

好的,很奇怪,但这是因为 actorname 方法。奇怪,但删除后工作。

【讨论】:

    【解决方案2】:

    记住它是一个函数,所以它应该是:

    class Actor(models.Model):
        first_name = models.CharField('First Name', max_length=135)
        last_name = models.CharField('Last Name', max_length=135)
    
        class Meta:
            db_table = u'actor'
    
        def actorname(self):
            return u'%s %s' %(self.first_name, self.last_name)
    
        def __unicode__(self):
            return str(self.actorname())
    

    另外,你可以这样做:

    def __unicode__(self):
        return u"%s %s" % (self.first_name, self.last_name)
    

    【讨论】:

    • 同样的问题,它没有工作。但我注意到的是,如果我选择Actor Object 并保存它,我会在列表显示页面上看到<bound method Actor.actorname of <Actor: Actor object>>
    • 正如我告诉你的,即使我写return str(self.first_name) 也不会改变。甚至认为,在其他模型中,一切正常。
    • 返回 u"%s" % self.actorname() 怎么样?
    • 同样的问题,这个模型没有任何工作。我真的很困惑。
    • 如果您使用我在回答中提供的最后一个解决方案会显示什么?
    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2015-02-09
    • 2012-04-28
    相关资源
    最近更新 更多