checkbox - 复选框选定的项目不更新数据库
问题描述
我试图选择表中的项目列表并将它们分配给一个新表。我可以选择并显示查询集,但它不会更新到数据库中。也许代码中有一些错误。表单已保存,但对象列表未保存。回溯已附加。查询集未保存到数据库中。这与外键值有关吗?欣赏一些建议或替代方案
模型.py
class BidItem(models.Model):
bid = models.ForeignKey(Bid, related_name='bids', on_delete=models.CASCADE)
order= models.ForeignKey(Order, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2)
quantity = models.ForeignKey(OrderItem, on_delete=models.CASCADE)
def __str__(self):
return str(self.id)
def bid_price(self):
return self.price * self.quantity
视图.py
def bid_list(request):
"""Place bids"""
selected = request.POST.getlist('vendorbid')
selected_orders = OrderItem.objects.filter(pk__in=selected)
if request.method == 'POST':
form = BidListForm(request.POST)
if form.is_valid():
bid = form.save()
for item in selected_orders:
BidItem.objects.create(bid=bid,
order = item['order.id'],
product=item['product'],
price=item['price'],
quantity=item['quantity'])
return render(request,'bids/bid_placed.html')
else:
return render(request, 'bids/bid_list.html', {'selected_orders': selected_orders, 'form': form})
else:
form = BidListForm()
orders = OrderItem.objects.all()
return render(request, 'bids/bid_list.html', {'form': form, 'orders': orders})
错误和回溯
我得到的错误是: TypeError at /bids/bid_list/ 'OrderItem' object is not subscriptable
解决方案
我终于解决了,因为有外键我必须相应地更改变量:
这是views.py中已解决的部分,供任何人参考:
Views.py 编辑的部分
BidItem.objects.create(bid=bid,
order=item.order,
product=item.product,
price=item.price,
quantity_id=item.quantity)
推荐阅读
- sql - WHERE 语句的数量是否会影响查询性能?
- r - 如何在 PERMANOVA(素食主义者)中包含随机效应?
- r - ifelse() 使用 mutate 无法正常工作:R
- c# - 该模板使用了尚不支持 UWp 的 shell
- excel - 在多个单元格/工作表上一次更新 excel 公式
- javascript - 如何从电子中的渲染器进程调用 preload.js 中定义的函数
- javascript - Fetch : 'string | 类型的参数 undefined' 不可分配给“RequestInfo”类型的参数
- python - 如何同时对 QPushButton 应用悬停和格式化?
- highcharts - 在 8.1.1 版本中组合图表会导致最后一个系列不出现
- python - 是否有另一种方法可以通过使用幻数来确定文件的 mime 类型?