Django admin:默认模型显示问题

时间:2011-02-06 03:04:26

标签: django django-models django-admin

在django模型中,如果我们有 def __unicode__(self):然后它将用作默认情况下显示模型的方式

现在在django admin中,我希望有一个custmized显示字段(将此对象显示为url,因此可以导航到此对象),但我无法更改 unicode 方法,因为它用于其他目的。我该怎么办?

3 个答案:

答案 0 :(得分:1)

您可以为管理类

创建自定义方法

class SomeModelAdmin(admin.ModelAdmin):
    list_display = ('__unicode__', 'active_status')

    def active_status(self, obj):
        if obj.profile.is_active:
            return """One"""
        return """Two"""

    active_status.allow_tags = True
    active_status.description = ""

这只是一个非常简单的例子,所以你可以把你的逻辑放到这个函数中 您还可以返回一些HTML代码

答案 1 :(得分:0)

请勿将__unicode__用于设置便捷网址等目的。

为了任何其他目的,这将模糊您的打印对象名称。

您想从哪个视图创建链接?从更改列表视图?从变化的角度来看?从外键?

通常,您只需在模型上定义任何方法(或ModelAdmin),即返回完整的HTML链接<a href=,设置allow_tags = True,并在管理员中引用它领域。

# models method
def admin_url(self):
    return '<a href="%s">Edit Model</a>' % the_url
admin_url.allow_tags = True


# ModelAdmin method, through ForeignKey
def admin_url(self, obj):
   return '<a href="%s">Edit Model</a>' % obj.foreignkey.url
admin_url.allow_tags = True

答案 2 :(得分:0)

我同意这些答案,但在我的机器上却没有工作。

我使用的是Python3和Django1.8,并尝试使用它。

class MyModel(models.Model):

    name = models.CharField(max_length=60)

    def __str__(self):
        return 'MyModel: {}'.format(self.name)