在django模型中,如果我们有
def __unicode__(self):
然后它将用作默认情况下显示模型的方式
现在在django admin中,我希望有一个custmized显示字段(将此对象显示为url,因此可以导航到此对象),但我无法更改 unicode 方法,因为它用于其他目的。我该怎么办?
答案 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)