【问题标题】:conditionally change widget type in django form以 django 形式有条件地更改小部件类型
【发布时间】:2015-01-17 16:41:14
【问题描述】:

我有以下简单的形式:

class ContactEmailForm(forms.ModelForm):

    subject = forms.ChoiceField(choices=SUBJECT_TYPES)

    class Meta:
        model = ContactEmail
        fields = ('name', 'email', 'subject', 'message',)

我想在选择字段和文本输入字段之间有条件地更改主题字段。

我该怎么做?

【问题讨论】:

    标签: django django-models django-forms django-widget


    【解决方案1】:

    这可以通过覆盖您的 ContactEmailForm 类中的 __init__ 函数来完成。

    class ContactEmailForm(forms.ModelForm):
    
        subject = forms.ChoiceField(choices=SUBJECT_TYPES)
    
        def __init__(self, *args, **kwargs):
            super(ContactEmailForm, self).__init__(*args, **kwargs)
            if YOURCONDITION:
                self.fields['subject'] = forms.CharField()
    
        class Meta:
            model = ContactEmail
            fields = ('name', 'email', 'subject', 'message',)
    

    【讨论】:

    • 条件中也可以使用模型的实例为self.instance
    猜你喜欢
    • 1970-01-01
    • 2012-03-09
    • 2023-03-29
    • 2017-05-07
    • 2015-04-13
    • 2017-09-25
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多