我想在购物车中添加我在(product_detail.html)中的实际产品。 所以在product_unit中,只需要指定产品的数量。
无论如何,我无法制作unit_product,自动添加我所在的实际产品。
forms.py
<%:HttpContext.Current.Session[YOUR_STORED_USERNAME_SESSION_KEY]%>
我将产品隐藏在模板中,因为它只是实际产品,无需指定。
views.py
class Product_unitForm(forms.ModelForm):
class Meta:
model = Product_unit
fields = [
'product',
'quantity',
]
widgets = {'product': forms.HiddenInput()}
我想从视图中手动,将product_unit的产品字段添加到它拥有的实际产品中(actual_product)
模板
def product_detail(request, id_category=None,id_product=None):
actual_product = Product.objects.get(id = id_product)
#Has an actual customer
#FORM
form_product_unit = Product_unitForm(request.POST or None)
form_product_unit.fields['product'] = actual_product # I try to add the product this way
if form_product_unit.is_valid():
instance_product_unit = form.save(commit=False)
instance_product_unit.product.save()
last_order = Order.objects.last()
is_buying = False
if(last_order.status == "en curso"):
is_buying = True
context = {
"Product" : actual_product,
"Is_buying" : is_buying,
#FORMS
"form_product_unit" : form_product_unit,
}
return render(request, "shopping/product_detail.html", context)
答案 0 :(得分:2)
在views.py文件中,我认为您只需进行两次更改
def product_detail(request, id_category=None,id_product=None):
actual_product = Product.objects.get(id = id_product)
form_product_unit = Product_unitForm(data=request.POST or None,
initial={'product': actual_product})
并删除行form_product_unit.fields['product'] = actual_product
。您可能需要稍微使用initial
字典来使其将正确的值绑定到字段,但这是一般的想法。文档中的相关部分为https://docs.djangoproject.com/en/1.9/ref/forms/api/#dynamic-initial-values