如何解决Django 表单集:如何将变量传递给表单?
我正在尝试将变量household_size 从views.py 传递到forms.py。但是,我不断收到一条错误消息:init() 得到了一个意外的关键字参数 'household_size'
#views.py
household_size = request.user.profile.children + request.user.profile.adults + request.user.profile.seniors
formset_class = modelformset_factory(Cart,form=CheckOut,extra=0)
formset = formset_class(queryset=users_cart_queryset,)
if request.method == 'POST':
formset = formset_class(request.POST,household_size=household_size)
if formset.is_valid():
print('valid')
#work do checks
for form in formset:
if (form.instance.quantity < 1):
form.instance.delete()
else:
#limit,points,in stock
household_size = request.user.profile.children + request.user.profile.adults + request.user.profile.seniors
if ( (form.instance.limit * household_size) > form.instance.quantity):
messages.error(request,"You've exceeded the limit for " + form.instance.item_name + ". The limit per house")
formset.save()
return redirect('/cart')
else:
print("not valid")
print(formset.errors)
formset = formset_class(queryset=users_cart_queryset)
else:
print("not post")
formset = formset_class(queryset=users_cart_queryset,household_size=household_size)
context = {'formset':formset,'household_size':household_size}
return render(request,'cart.html',context)
#forms.py
class CheckOut(ModelForm):
def __init__(self,*args,**kwargs):
household_size = kwargs.pop('household_size')
super(CheckOut,self).__init__(*args,**kwargs)
self.fields['quantity'].widget.attrs.update(
{'max': (self.instance.limit * household_size)},)
quantity = forms.IntegerField(widget=forms.TextInput(attrs={'type':'number','min':0,'style':'max-width: 3em'}))
class Meta:
model = Cart
fields = ('quantity',)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。