如何解决两个不同模型中的form.save混淆
由于型号问题,我在显示页面时遇到问题。老实说,我不知道问题出在哪里,我在这里看到的每个解决方案都超出了我的范围,因为我才刚刚开始学习Django。总结如下: 我从两个模型(相互关联)创建了两个表单,并将这些表单中的数据呈现在单个页面中。数据在仪表板面板上显示良好,并且提交确实将其保存到数据库中。我试图覆盖形式的保存功能,但没有结果。但是,每当我尝试加载包含相同数据的页面(为客户显示类似首页的页面)时,我都会被打中
Traceback (most recent call last):
File "C:\Users\shahi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py",line 34,in inner
response = get_response(request)
File "C:\Users\shahi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py",line 115,in _get_response
response = self.process_exception_by_middleware(e,request)
File "C:\Users\shahi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py",line 113,in _get_response
response = wrapped_callback(request,*callback_args,**callback_kwargs)
File "D:\Softwarica\3rd semester\Modern Web\Assignment\Project - Farmer's Market\farmersmarket\home\views.py",line 9,in index
order,created = Order.objects.get_or_create(customer=customer,complete=False)
File "C:\Users\shahi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\manager.py",line 82,in manager_method
return getattr(self.get_queryset(),name)(*args,**kwargs)
File "C:\Users\shahi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py",line 559,in get_or_create
return self.get(**kwargs),False
File "C:\Users\shahi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py",line 419,in get
raise self.model.MultipleObjectsReturned(
shop.models.Order.MultipleObjectsReturned: get() returned more than one Order -- it returned 2!
forms.py中的代码:
from django.forms import ModelForm
from shop.models import *
class OrderForm(ModelForm):
class Meta:
model = Order
fields = ('customer',)
class OrderItemForm(ModelForm):
class Meta:
model = OrderItem
fields = ('item','status',)
views.py
def createOrder(request):
form_order = OrderForm()
form_orderitem = OrderItemForm()
if request.method == 'POST':
# print('Printing POST',request.POST)
form_order = OrderForm(request.POST)
form_orderitem = OrderItemForm(request.POST)
if form_order.is_valid() and form_orderitem.is_valid():
form_order.save()
form_orderitem.save()
return redirect('/dashboard')
context = {'form_order': form_order,'form_orderitem': form_orderitem}
return render(request,'dashboard/order_form.html',context)
我尝试覆盖表单中的save函数,但没有结果。
解决方法
get()不能用于返回多个对象的情况。尝试使用filter()。
如果有帮助,请检查first()或last()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。