在小部件属性中覆盖模型上设置的 max_length
Override in the widget attributes the max_length set on the Model
在Model
中我设置了字段的最大长度:
short_description = models.CharField(max_length=405)
在小部件属性的 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})
}
HTML minlegth 中的问题来自小部件,但 maxlength 仍然取自模型(405 而不是 400)。
我希望小部件属性覆盖模型属性。
Meta class 中的 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*'}),
}
class ItemModelForm(forms.ModelForm):
short_description = forms.CharField(
max_length = 400,
min_length = 200,
widget=forms.Textarea(
)
)
class Meta:
model = Item
fields = ['name', 'short_description', 'description']
widgets = {
'name': TextInputWidget(attrs={'placeholder': 'Name*'}),
}
在Model
中我设置了字段的最大长度:
short_description = models.CharField(max_length=405)
在小部件属性的 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})
}
HTML minlegth 中的问题来自小部件,但 maxlength 仍然取自模型(405 而不是 400)。
我希望小部件属性覆盖模型属性。
Meta class 中的 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*'}),
}
class ItemModelForm(forms.ModelForm):
short_description = forms.CharField(
max_length = 400,
min_length = 200,
widget=forms.Textarea(
)
)
class Meta:
model = Item
fields = ['name', 'short_description', 'description']
widgets = {
'name': TextInputWidget(attrs={'placeholder': 'Name*'}),
}