我如何在 django 的同一视图功能中将最近保存的数据发送到模板中
Posted
技术标签:
【中文标题】我如何在 django 的同一视图功能中将最近保存的数据发送到模板中【英文标题】:How i can send recently save data into template in same view function in django 【发布时间】:2020-07-14 07:09:32 【问题描述】:view.py
在下面的代码中,我将我最近的数据保存在模型中并创建了一个字典order = order.save()
,因为我可以在我的模板中使用它。当我运行代码时,订单具有 ```None`` 值。
我能为它做些什么。
def post(self, request, product_id):
product = Product.objects.get(id=product_id)
if request.POST['address'] and request.POST['quantity']:
order = Order()
order.or_proName = product.pro_name
order.or_companyName = product.companyName
order.or_quatity = request.POST['quantity']
order.or_quatity = int( order.or_quatity)
orderPrice = order.or_quatity*product.Sale_Price
order.or_bill = 100 + orderPrice
order.pub_date = timezone.datetime.now()
product.Quantity -= order.or_quatity
product.save()
order = order.save()
args = 'order':order
return render(request, self.red_templateName, args)
【问题讨论】:
你不应该使用order = order.save()
,而应该使用order.save()
order.save() 是模型中的一个函数。它通常不返回任何内容,因此您的变量“order”将为空。您可以只调用 order.save() 而不将其分配给变量,就像您对产品所做的那样。之后,您可以像往常一样将订单传递给您的模板。
【参考方案1】:
django.db.models.Model.save()
通常不返回任何内容(与 django.forms.Form.save()
函数不同)
从您的代码中删除 order = order.save()
行
你可以在这里看到Model.save()
是如何实现的https://github.com/django/django/blob/master/django/db/models/base.py#L666
【讨论】:
【参考方案2】:您不应将.save()
函数的结果分配给order
,因为这确实是None
。只需.save()
订单,并在您的视图中进一步使用order
函数:
def post(self, request, product_id):
product = Product.objects.get(id=product_id)
if request.POST['address'] and request.POST['quantity']:
order = Order()
order.or_proName = product.pro_name
order.or_companyName = product.companyName
order.or_quatity = request.POST['quantity']
order.or_quatity = int( order.or_quatity)
orderPrice = order.or_quatity*product.Sale_Price
order.or_bill = 100 + orderPrice
order.pub_date = timezone.datetime.now()
product.Quantity -= order.or_quatity
product.save()
order.save()
args = 'order':order
return render(request, self.red_templateName, args)
但是,您也应该定义一个 else
案例,因为 post
方法应该总是返回一个 HttpResponse
对象,例如错误消息。
【讨论】:
以上是关于我如何在 django 的同一视图功能中将最近保存的数据发送到模板中的主要内容,如果未能解决你的问题,请参考以下文章