覆盖小部件属性中模型上设置的 max_length

use*_*631 2 django django-forms django-widget

Model我设置字段的最大长度:

short_description = models.CharField(max_length=405)
Run Code Online (Sandbox Code Playgroud)

ModelForm小部件属性中,我设置了最小长度和最大长度:

class ItemModelForm(forms.ModelForm):
    class Meta:
        model = Item
        fields = ['name', 'short_description', 'description']
    widgets = {
            'name': TextInputWidget(attrs={'placeholder': 'Name*'}),
        'short_description': TextareaWidget(attrs={'minlength': 200, 'maxlength': 400}) 
Run Code Online (Sandbox Code Playgroud)

}

HTML 中的问题是 minlegth 来自小部件,但 maxlength 仍然取自模型(405 而不是 400)。

我希望小部件属性覆盖模型属性。

Vit*_*tas 5

Meta 类中的属性widgets仅修改小部件,而不修改字段属性本身。您所要做的就是重新定义您的模型表单字段。

class ItemModelForm(forms.ModelForm):
    short_description = forms.CharField(max_length=400, min_length=200, widget=TextareaWidget())

    class Meta:
        model = Item
        fields = ['name', 'short_description', 'description']
        widgets = {
            'name': TextInputWidget(attrs={'placeholder': 'Name*'}),
        }
Run Code Online (Sandbox Code Playgroud)