django-bootstrap-v5 DecimalField 在 ModelForm Class 中抛出错误
django-bootstrap-v5 DecimalField Throwing Errors in ModelForm Class
使用django-bootstrap-v5模块,出现错误:
"init() 得到了意外的关键字参数 'attrs'"
在简单模型的 ModelForm 定义中的 DecimalField 小部件上 class。模型定义如下:
class MenuItem(models.Model):
menuname=models.CharField(max_length=20,primary_key=True)
description=models.TextField()
price=models.DecimalField(max_digits = 5, decimal_places = 2)
Model Form定义如下:
class MenuItemForm(forms.ModelForm):
class Meta:
model=MenuItem
fields='__all__'
widgets = {'menuname': forms.TextInput(attrs={'class': 'form-control'}),
'description': forms.Textarea(attrs={'class': 'form-control'}),
'price': forms.DecimalField(attrs={'class': 'form-control'}),
}
在线上抛出错误:
'price': forms.DecimalField(attrs={'class': 'form-control'}),
如果我将该行更改为:
'price': forms.TextInput(attrs={'class': 'form-control'}),
然后它没有抛出任何错误。但当然我宁愿使用 DecimalField 小部件而不是 TextInput 来呈现模型中的底层 DecimalField。
再次使用 django-bootstrap-v5 模块。
有什么想法吗?
forms.DecimalField
是一种形式 field 而不是 widget。 DecimalField
使用的默认小部件是 NumberInput
[Django docs] 因此您应该改用它:
class MenuItemForm(forms.ModelForm):
class Meta:
model = MenuItem
fields = '__all__'
widgets = {'menuname': forms.TextInput(attrs={'class': 'form-control'}),
'description': forms.Textarea(attrs={'class': 'form-control'}),
'price': <b>forms.NumberInput</b>(attrs={'class': 'form-control'}),
}
使用django-bootstrap-v5模块,出现错误:
"init() 得到了意外的关键字参数 'attrs'"
在简单模型的 ModelForm 定义中的 DecimalField 小部件上 class。模型定义如下:
class MenuItem(models.Model):
menuname=models.CharField(max_length=20,primary_key=True)
description=models.TextField()
price=models.DecimalField(max_digits = 5, decimal_places = 2)
Model Form定义如下:
class MenuItemForm(forms.ModelForm):
class Meta:
model=MenuItem
fields='__all__'
widgets = {'menuname': forms.TextInput(attrs={'class': 'form-control'}),
'description': forms.Textarea(attrs={'class': 'form-control'}),
'price': forms.DecimalField(attrs={'class': 'form-control'}),
}
在线上抛出错误:
'price': forms.DecimalField(attrs={'class': 'form-control'}),
如果我将该行更改为:
'price': forms.TextInput(attrs={'class': 'form-control'}),
然后它没有抛出任何错误。但当然我宁愿使用 DecimalField 小部件而不是 TextInput 来呈现模型中的底层 DecimalField。
再次使用 django-bootstrap-v5 模块。
有什么想法吗?
forms.DecimalField
是一种形式 field 而不是 widget。 DecimalField
使用的默认小部件是 NumberInput
[Django docs] 因此您应该改用它:
class MenuItemForm(forms.ModelForm):
class Meta:
model = MenuItem
fields = '__all__'
widgets = {'menuname': forms.TextInput(attrs={'class': 'form-control'}),
'description': forms.Textarea(attrs={'class': 'form-control'}),
'price': <b>forms.NumberInput</b>(attrs={'class': 'form-control'}),
}