【问题标题】:How do I change a TextInput value through ModelForm in Django?如何在 Django 中通过 ModelForm 更改 TextInput 值?
【发布时间】:2010-09-25 22:13:11
【问题描述】:

我有一个 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']

在这个 title 中,bodynew status 直接从 Article 模型加载。我想手动填充 tags 字段。我该怎么做?

提前致谢。

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    您可以通过 __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() 上将初始值作为参数传入。

    【讨论】:

    • 谢谢,效果很好!关于该主题的最佳文档资源是什么?
    猜你喜欢
    • 2012-01-09
    • 2011-11-16
    • 1970-01-01
    • 2019-09-17
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多