如果有两个模型
模型.py
class ModelA(models.Model):
pass
class ModelB(models.Model):
a = models.ForeignKey(ModelA, null=True)
admin.py
class ModelBAdmin(admin.ModelAdmin):
list_display = ('id', 'a', )
list_display_links = None
ordering = ('-id', )
admin.site.register(ModelB, ModelBAdmin)
class ModelAAdmin(admin.ModelAdmin):
list_display = ('id', )
list_display_links = None
admin.site.register(ModelA, ModelAAdmin)
有没有办法将 a
与其在 ModelB
的 ListView 中的详细 View 链接起来?如果没有,那么我们可以在 ModelB
的详细 View 中做同样的事情吗?也就是说,将 a
显示为其详细 View 的链接?
目前在 ModelB
的 ListView 中只有 ModelA
的 id
。要查看其详细信息,我必须转到 ModelA
ListView 并搜索 id。我希望 ModelB
ListView 中的 id
指向 a
的详细 View (如/admin/ModelA/{a.id})
最佳答案
ListView 中的字段可以是可调用的,因此您可以这样做:
from django.core.urlresolvers import reverse
class ModelBAdmin(admin.ModelAdmin):
list_display = ('id', 'a_link', )
list_display_links = None
ordering = ('-id', )
def a_link(obj):
return format_html('<a href="{}">{}</a>', reverse(
'admin:myapp_a_change', args=[obj.a.id]), obj.a.name)
a_link.short_description = "Model A Details"
admin.site.register(ModelB, ModelBAdmin)
关于python - 将外键记录链接到 Django Admin 中的详细 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37226711/