将自定义方法添加到由modelform_factory生成的Django模型表单中

时间:2019-01-09 15:10:24

标签: django python-3.x django-models

我有这个定义:

ProfileForm = modelform_factory(User, fields=('username'))

如何向ProfileForm添加自定义clean_data方法?

1 个答案:

答案 0 :(得分:1)

您可以定义模型表单类,并将其传递给modelform_factory。例如:

class UserForm(forms.ModelForm):
    def clean_username(self):
        """always make username lowercase"""
        return self.cleaned_data['username'].lower()

ProfileForm = modelform_factory(User, form=UserForm, fields=('username',))

如果需要动态定义表单类,则可以使用type()。尽管This blog post已有10年的历史了,所以可能会有助于解释这个想法。