Python Django从表单中隐藏字段并自动添加字段

Python Django从表单中隐藏字段并自动添加字段,python,django,forms,Python,Django,Forms,我想将我所处的实际产品(product_detail.html)添加到购物车中。 所以在产品单位中,只需要指定产品的数量 无论如何,我无法制作单位产品,自动添加我所处的实际产品 forms.py class Product_unitForm(forms.ModelForm): class Meta: model = Product_unit fields = [ 'product', 'quantity',

我想将我所处的实际产品(product_detail.html)添加到购物车中。 所以在产品单位中,只需要指定产品的数量

无论如何,我无法制作单位产品,自动添加我所处的实际产品

forms.py

class Product_unitForm(forms.ModelForm):
    class Meta:
        model = Product_unit
        fields = [
            'product',
            'quantity',
        ]

        widgets = {'product': forms.HiddenInput()}
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)
我从模板中隐藏产品,因为它只是实际产品,不需要指定

视图.py

class Product_unitForm(forms.ModelForm):
    class Meta:
        model = Product_unit
        fields = [
            'product',
            'quantity',
        ]

        widgets = {'product': forms.HiddenInput()}
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)
我想从视图中手动将product\u unit的product字段添加到它拥有的实际产品(实际产品)

模板

<img src="{{Product.image.url}}"/>
<h1>{{Product.title}}</h1>

<form method="POST" action="">{% csrf_token %}
{{ form_product_unit.as_p }}

<input type="submit" value="Add" />
</form>

{{Product.title}}
{%csrf_令牌%}
{{form_product_unit.as_p}

在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']=实际_product
。您可能需要稍微使用
initial
字典,以便将正确的值绑定到字段,但这是一般的想法。文档中的相关部分在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']=实际_product
。您可能需要稍微使用
initial
字典,以便将正确的值绑定到字段,但这是一般的想法。文档中的相关部分是

能否请你缩进你的代码并解释得更清楚一点。能否请你缩进你的代码并解释得更清楚一点。