有了下面的表模型,我想同时从表单向2个表写入数据。
class Order(models.Model):
department = models.CharField(max_length=20)
responsible = models.CharField(max_length=20)
month = models.DecimalField(max_digits=2, decimal_places=0, default=0)
year = models.DecimalField(max_digits=4, decimal_places=0, default=0)
def __str__(self):
return str(self.department)
class Article(models.Model):
name = models.CharField(max_length=20)
description = models.CharField(max_length=20)
quantity = models.DecimalField(max_digits=5, decimal_places=0, default=0)
order_id = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="Order")
comments = description = models.CharField(max_length=200)
def __str__(self):
return str(self.name)
视图现在非常简单:
def new_order(request):
form_order = OrderForm(request.POST or None)
order_Date = datetime.now()
add_date_month = order_Date.strftime("%m")
add_date_year = order_Date.strftime("%Y")
if form_order.is_valid():
form_order.instance.month = request.POST.get('date_month')
form_order.instance.year = request.POST.get('date_year')
form_order.save()
return redirect(orders)
context = {
'form_order': form_order,
'date_month': add_date_month,
'date_year': add_date_year,
}
return render(request, 'supplier/new_order.html', context)
目前,代码中可能有一个错误,因为我正在尝试更改现有的更大的项目。以前,我将文章保存为单独的项目。现在我想把它们按顺序分组。
我想在用户添加第一个项目的同时创建一个新的订单。然后,用户将向该订单添加文章,数据将保存在一个表中。此外,每个项目都必须具有它被分配到的订单的ID。在后续文章的情况下,不会有问题,如何将这个ID添加到第一个添加的文章中?
我的问题是:如何一次将数据写入两个表?
1条答案
按热度按时间vh0rcniy1#
使用基于类的视图,将它们基于一个模型,但在必要时添加与另一个模型相关的字段:
在视图中,关注form_valid中的另一个模型
在Create视图中,您希望为新创建的示例创建一个外键