如何在Django中通过ModelForm更改TextInput值?

时间:2010-09-25 22:13:12

标签: django django-forms

我有一个ModelForm如下:

class ArticleForm(forms.ModelForm):
    title = forms.CharField(max_length=200)
    body = forms.CharField(widget=forms.Textarea)
    new_status = forms.CharField(label="Status", max_length=1,  widget=forms.Select(choices=APPS_ARTICLE_STATUS))
    tags = forms.CharField(label="Generic Tags", max_length=200, widget=forms.TextInput(attrs={'size':'40'}))

    class Meta:
        model = Article
        fields = ['title', 'body']

标题正文新状态直接从文章模型加载。我想手动填充标签字段。我该怎么做呢?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以通过 __ init ___ 方法设置初始属性。此外,如果在模型上设置了verbose_name,并且您喜欢默认小部件,则无需再次指定每个字段标签/小部件。

class ArticleForm(forms.ModelForm):

    tags = forms.CharField(label="Generic Tags", max_length=200, widget=forms.TextInput(attrs={'size':'40'}))

    class Meta:
        model = Article
        fields = ['title', 'body', 'new_status']

    def __init__(self, *args, **kwargs):
        super(ArticleForm, self).__init__(*args, **kwargs)
        self.fields["tags"].initial = "Some initial value"

我假设您的初始值将以某种方式动态。如果它真的是静态的,你可以在CharField()上将初始值作为参数传递。