有一个东西我有一个使用ForeignKey / OneToOneFiled到其他模型的模型(可编辑设置为False),如下所示:
class Campus(TimeStampedModel, StatusModel):
# other fields
gallery = models.ForeignKey(Album, editable=False, related_name='campus')
我想要实现的是让校园管理页面链接到图库(不是可编辑字段,只是链接)。所以在django文档link here中提供了一个技巧。
我已经这样做了:
class CampusAdmin(admin.ModelAdmin):
readonly_fields = ('gallery',)
def gallery(self, instance):
print 'got here'
return '<a href="%s">%s</a>' % ('/test/url', 'Test name')
gallery.short_description = "Gallery"
gallery.allow_tags = True
admin.site.register(Campus, CampusAdmin)
因此,我在django admin中有可见的gallery字段,但它只是一个文本(图库名称),而不是我期望的超链接。
我检查过画廊功能实际上从未被调用过。
有谁知道我做错了什么?
答案 0 :(得分:1)
这项工作对我来说:
在models.py
中定义一个方法,如下所示:
class Campus(TimeStampedModel, StatusModel):
# other fields
gallery = models.ForeignKey(Album, editable=False, related_name='campus')
def gallery_link(self):
return '<a href="%s">%s</a>' % ('/test/url', 'Test name')
gallery_link.short_description = "Gallery Link"
gallery_link.allow_tags = True
在list_display
中使用admin.py
:
class CampusAdmin(admin.ModelAdmin):
list_display = ('gallery_link',)
admin.site.register(Campus, CampusAdmin)
如果您想使用您的解决方案,您必须:
1 - 将def gallery
更改为其他名称。
2 - 为list_display
添加新名称。
class CampusAdmin(admin.ModelAdmin):
list_display = ('gallery_link',)
readonly_fields = ('gallery_link',)
def gallery_link(self, instance):
return '<a href="%s">%s</a>' % ('/test/url', 'Test name')
gallery_link.short_description = "Gallery"
gallery_link.allow_tags = True
admin.site.register(Campus, CampusAdmin)