Python django功能不减去所选数量

Python django功能不减去所选数量,python,django,Python,Django,我创建了一个表单,允许用户选择他/她想要购买的物品和数量,选择后,我将从库存模型数量中减去用户在物品模型中选择的药丸数量。我面临的问题是,即使我选择60,views.py中的函数也只能减去30 models.py class Item(models.Model): item_choices = (('Item1', 'Item1'), ('Item2', 'Item2'), ('Item3','Item3'), ('Item4','It

我创建了一个表单,允许用户选择他/她想要购买的物品和数量,选择后,我将从库存模型数量中减去用户在物品模型中选择的药丸数量。我面临的问题是,即使我选择60,views.py中的函数也只能减去30

models.py

class Item(models.Model):
    item_choices = (('Item1', 'Item1'),
        ('Item2', 'Item2'), 
        ('Item3','Item3'),
        ('Item4','Item4'),
        )

    item = models.CharField(max_length = 100, choices = item_choices)
    pill_choices = ((30, 30),
        (60, 60),)
    pill = models.IntegerField(max_length = 100, choices = pill_choices)

class Stock(models.Model):
    stockId = models.AutoField(primary_key=True)
    ItemID = models.ForeignKey(Order,on_delete= models.CASCADE)
    Item_name = models.CharField(max_length=100)
    quantity = models.IntegerField(default='0', blank=True, null=True)
    

    def __str__(self):
        return self.Item_name

   
views.py

def create_order(request):
  
    form = OrderForm(request.POST or None, request.FILES or None, user=request.user)
    if request.method == 'POST':
        item = Item.objects.all()
        if item.filter(product='item1', pill=30):
            Stock.objects.filter(item_name='item1').update(quantity=F('quantity') - 30)

        elif item.filter(item='item1', pill=60):
            Stock.objects.filter(item_name='item1').update(quantity=F('quantity') - 60)


        else:
            return None

        item = form.save(commit = False)
        item.user = request.user;
        item.save()
        form = OrderForm(user=request.user)
        return redirect('/orderlist')
    context = {'form':form}
    html_form = render_to_string('order_form.html', context, request=request,
                )
    return JsonResponse({'html_form': html_form})

您需要从有效表单获取用户输入值

if request.method == 'POST':
    form = OrderForm(request.POST or None, request.FILES or None, user=request.user)
    if form.is_valid():
       pill = form.cleaned_data.get('pill')
       Stock.objects.filter(item_name='item1').update(quantity=F('quantity') - pill)
    
编辑: 您可以像这样获取用户选择的项目(与我对pill所做的相同),并根据用户选择的项目过滤股票模型

if form.is_valid():
     pill = form.cleaned_data.get('pill')
     item = form.cleaned_data.get('item')
     Stock.objects.filter(item_name=item).update(quantity=F('quantity') - pill)

您没有在更新
股票的条件中使用任何表单值
<代码>if item.filter(product='item1',pill=30):使用硬编码值,但没有用户提供的任何内容我对pythonI很陌生我很困惑如何从表单和数量中选择任何产品然后从我创建的库存模型对象中减去数量每个对象包含每个项目的数量可以将
订单
添加到问题?我有4种产品和2种数量选择。我希望用户从表单选择字段中选择产品和数量。然后根据产品和数量进行选择。数量应从库存模型中减去。