将动态字段添加到django管理模型表单

Pau*_*aul 8 python django

我需要将包含我网站上模型视图链接的字段添加到django管理视图中.当我将字段名称添加到list_display和定义用于呈现此URL的方法时:

class SetAdmin(admin.ModelAdmin):
    list_display = ['many other fields', 'show_set_url']

    def show_set_url(self, obj):
            return '<a href="#">Set</a>' # render depends on other fields
Run Code Online (Sandbox Code Playgroud)

它显示在django admin中的Sets列表中,但不是以模型形式显示.如何修复此问题并在django admin中添加指向"设置表单"的链接?

我也试过为这个模型创建自定义表单:

from core.models import Set
from django import forms

class SetAdminForm(forms.Form):
    class Meta:
        model = Set

    def __init__(self, *args, **kwargs):
        super(SetAdminForm, self).__init__(*args, **kwargs)
        self.fields['foo'] = forms.IntegerField(label=u"Link")
Run Code Online (Sandbox Code Playgroud)

但现在形式上有明显的效果.

Tam*_*Tas 6

您可以通过覆盖来完成您尝试的操作,ModelAdmin但您还需要覆盖ModelAdmin.get_fieldsets.这个答案可能会帮到你.链接中的OP也存在类似的问题.

编辑:如果您不想要可编辑字段,可以尝试覆盖ModelAdmin.get_readonly_fields.另请在此处查看要覆盖的更多属性.