问题描述
class CustomerOrderForm(ModelForm):
quantity = forms.IntegerField(widget=forms.TextInput(attrs={'min':0,'max':,'value':0,'type':'number','style':'max-width: 3em'}))
class Meta:
model = Cart
fields = ('__all__')
每件商品都有自己的购买限制,所以我想访问数据库并获取该商品的购买限制并将其设置为“最大”。如何在 django 表单上执行此操作?
我知道对于 html,它是这样的,但是我有一个需要从数据库获取的动态值:
label for="zip_code">Zip Code:</label>
<input type="text" id="zip_code" name="zip_code" placeholder="Five digit zip code" pattern="[0-9]{5}" maxlength="5" required>
解决方法
您必须在 init 函数中设置/更新您的最大值,因为您的最大值取决于实例。像这样的东西。
class CustomerOrderForm(ModelForm):
quantity = forms.IntegerField(widget=forms.TextInput(attrs={'min':0,'value':0,'type':'number','style':'max-width: 3em'}))
class Meta:
model = Cart
fields = ('__all__')
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.fields['quantity'].widget.attrs.update(
{'max': self.instance.quantity},)
请注意,此检查仅在呈现 HTML 时在 init 中进行。您可能希望在提交表单时在 clean() 或 save() 函数中进行一些验证。
编辑: 我没有正确阅读您的问题。
self.instance
指的是购物车模型。但您可能想要迭代您的项目。