在表格中修改元素的表示

2024-09-30 06:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

对于这个特定的管理页面,我想将“current value”(用红色圆圈勾画)转换为一个链接,该链接可以返回到这个特定对象的管理页面。在

但我找不到去哪里做这个改变。我知道我需要以某种方式克服这个问题 但我想不出来。在

我需要重写什么来做我想要的?在

current admin interface

管理模型定义:

class FirmwareConfigElementsChoiceInline(admin.TabularInline):
    model = FirmwareConfigElements
    extra = 1

class FirmwareConfigAdmin(admin.ModelAdmin):
    save_as = True
    list_display = ('name', 'description')
    inlines = [FirmwareConfigElementsChoiceInline]

利用菲利普的大力帮助,我做到了:

^{pr2}$

但是在上面的代码中,self.fields['type'].label的内容是Type,而不是我预期的{}。在

我已经在调试器中研究过了,但是我不知道如何获取要更改的特定标签。在


Tags: 对象模型定义adminvalue链接方式页面
2条回答

您需要为^{cd2>}模型提供自定义^{cd1>},您将将其设置为^{{cd3>}类属性的值。

在这里,您将要覆盖^{{cd4>}实例方法,以便为要覆盖的字段分配新标签,如果表单已绑定:

class FirmwareConfigElementsForm(models.ModelForm):
    def __init__(self, *args, **kwargs):
        klass = FirmwareConfigElementsForm
        super(klass, self).__init__(*args, **kwargs)

        if form.is_bound and 'value' in self.data:
            value = self.data['value']
            url = ''  # TODO: get the URL for the value
            hyperlink = '<a href="%s">%s</a>' % (url, value)
            label = self.fields['type'].label.replace(value, hyperlink)
            self.fields['type'].label = label


class FirmwareConfigElementsChoiceInline(admin.TabularInline):
    model = FirmwareConfigElements
    extra = 1
    form = FirmwareConfigElementsForm

现在,如果希望标签在用户更改表单数据时动态更改,那么它会变得更丑,您必须使用referencing JavaScript media并立即执行上述操作。

内联管理模型有一个template property,可用于提供自定义模板。你需要从那里修改url。在

相关问题 更多 >

    热门问题