Django:如何渲染ModelForm可部分编辑的字段并将其他字段显示为标签项?

时间:2014-09-06 18:15:00

标签: python django forms

我正在django上做我的第一个应用程序。

我有以下课程:

class SolicitanteForm(ModelForm):

    class Meta:
        model = Solicitante
        fields = ['congregacionOfertante', 'id_oferta', 'observaciones', 'descartado']

Solicitante扩展了django Model类,并有其他字段。

我想使用django表单方法来呈现表单。但它只渲染Meta.fields上定义的字段。我希望它渲染其他字段,但使用<label><span>代替<input> readonly属性。

我该怎么做?

提前致谢。

2 个答案:

答案 0 :(得分:1)

要显示所有字段,请尝试在Meta:

中使用__all__
class SolicitanteForm(ModelForm):

    class Meta:
        model = Solicitante
        fields = '__all__'

用于显示表单字段负责widgets。因此,您需要编写具有必要行为的自己的小部件。

在这个post中,作者解决了类似的问题,也许它会有所帮助

答案 1 :(得分:0)

您可以使用readonly HTML属性。它将使输入可以列表但不可用。在HTML中:

<input type="text" name="congregacionOfertante" value="Cameroon" readonly>

您可以按以下方式自定义表单以添加HTML属性:

class SolicitanteForm(forms.ModelForm):
    class Meta:
        model = Solicitante
        fields = ['congregacionOfertante', 'id_oferta', 'observaciones', 'descartado']
        widgets = {
            'congregacionOfertante': forms.TextInput({'readonly': 'readonly'})
        }

参考:HTML readonly Attribute

如果您不希望它可点击/选择使用disabled属性。