微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 表单小部件:如何将最大值设置为每个项目的数据库中的值?

如何解决Django 表单小部件:如何将最大值设置为每个项目的数据库中的值?

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

指的是购物车模型。但您可能想要迭代您的项目。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。