在django中用于表单中的模型字段的字段类型是什么?

时间:2014-10-29 19:00:55

标签: django django-models django-forms

我需要在我的表单中创建一个模型字段。我这样做有以下几点:

class ActivityEntryForm(forms.ModelForm):
    activity = forms.CharField(widget=forms.TextInput(attrs={'readonly':'readonly'}))
    duration = forms.IntegerField()

    class Meta:
        model = CustomerActivity
        fields = ('activity', 'duration',)

Activity是CustomerActivity模型的实际模型外键字段。

目前显示活动ID号。我希望它打印活动的名称。

我使用哪种字段类型或如何显示名称而不是ID?

1 个答案:

答案 0 :(得分:1)

首先,请注意readonly属性不能安全地阻止更改。任何打字机都可以使用内置于任何浏览器中的检查元素等来更改html代码。出于安全原因,最好从表单中排除字段并以另一种方式显示数据,或者进行服务器端检查以防止人们更改数据。

这也是解决问题的好方法。作为ModelForm的一个实例,您的表单具有instance属性,该属性保存与该对象相关的实际数据,因为该数据存在。而不是通过未使用的表单字段,使用实例中的数据原样:

<input type="text" readonly="readonly">{% firstof form.instance.activity.name "<default>" %}</input>