python - 将外键记录链接到 Django Admin 中的详细 View ?

标签 python django

如果有两个模型

模型.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 中只有 ModelAid。要查看其详细信息,我必须转到 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/

相关文章:

python - Django 表单的赞成票和反对票按钮

django - 在模型中包含一个 Admin 类?

python - 迭代不同长度的列表

Python lambda 不从函数获取变量

python - lat lon 子集的 netcdf4 提取

python - 检查另一个字符串中是否存在多个字符串

python - 如何识别 Bootstrap 模板中的 CSS 样式路径?

python - 在负载均衡器中打印实例的状态

html - 如何在 Django 中用另一种语言翻译整个 html 页面?

python - Django - MYSQL中自动删除 'old'数据集