Django,将readonly字段(从实例方法)添加到modelform。

时间:2015-03-11 11:47:43

标签: django modelform

在Django的管理员中,您可以通过readonly选项将实例方法调用添加到编辑页面。

我可以使用ModelForm做类似的事情,并显示实例方法调用的结果吗?最好使其成为表格visible_fields列表的一部分。

我的模板很通用,所以它们循环遍历表单可见字段列表,我宁愿不改变这些。

1 个答案:

答案 0 :(得分:1)

Oke,我的解决方案会非常hacky,但你可能会做这样的事情:

class YourModelForm(forms.ModelForm):
    class Meta:
        model = YourModel
        fields = []

    def __init__(self, *args, *kwargs):
        super(YourModelForm, self).__init__(*args, **kwargs)
        # You can also user insert, to add on a certain position
        self.visible_fields.append(self.instance.method())

现在问题可能是你附加了一个值,因为我不知道你如何渲染你的字段。但你可以通过附加一个类似Field的对象来解决这个问题,它会在你调用的必要方法上返回转义(并保存)的html。

其他hacky选项,添加一个附加字段,使用窗口小部件将其属性设置为disabled=disabled,并且由于已禁用input值并未与表单一起提交,请将其设置为{{1 }}