在Django模型,如果我们有
def __unicode__(self):
那么它将被用来作为你想怎么默认显示Django管理:默认的模型显示问题
现在的模式,我想有一个custmized显示字段(将此对象显示为URL,因此可以导航到此对象),但我不能更改它用于其他目的的方法。我该怎么做?
在Django模型,如果我们有
def __unicode__(self):
那么它将被用来作为你想怎么默认显示Django管理:默认的模型显示问题
现在的模式,我想有一个custmized显示字段(将此对象显示为URL,因此可以导航到此对象),但我不能更改它用于其他目的的方法。我该怎么做?
别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
您可以创建管理类
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代码
我同意这些答案,但在我的机器上不工作。
我正在使用Python3和Django1.8,并尝试使用它。
class MyModel(models.Model):
name = models.CharField(max_length=60)
def __str__(self):
return 'MyModel: {}'.format(self.name)