2011-02-06 114 views
1

在Django模型,如果我们有
def __unicode__(self):那么它将被用来作为你想怎么默认显示Django管理:默认的模型显示问题

在Django管理

现在的模式,我想有一个custmized显示字段(将此对象显示为URL,因此可以导航到此对象),但我不能更改它用于其他目的的方法。我该怎么做?

回答

0

别t使用__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 
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代码

0

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

我正在使用Python3和Django1.8,并尝试使用它。

class MyModel(models.Model): 

    name = models.CharField(max_length=60) 

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