我正在做一个像电子商务网站这样的项目。到目前为止,一切正常,但如果用户购物车/包中没有任何内容,则会发生错误。我试过保存方法,但我想我做错了什么。有人能帮我解决吗
views.py
def your_cart(request):
user = User.objects.getFromUser(request.user)
order = models.Order.objects.filter(owner = user, is_ordered = False)
if (len(order)==0):
order = models.Order()
order.owner = user
else:
order = order[0]
items = order.items.all()
if request.method == 'POST':
demand_date = request.POST.get('demand_date')
demand_date_obj = datetime.strptime(demand_date,"%m/%d/%Y %I:%M %p")
order.demand_date = localtime.localize(demand_date_obj)
order.save()
return render(request, "Inventory/client_inventory/checkout.html", {'items':items})
模型。派克
class Order(models.Model):
owner = models.ForeignKey('user.User', on_delete=models.SET_NULL, null=True)
is_empty = models.BooleanField(default=True)
is_ordered = models.BooleanField(default=False)
items = models.ManyToManyField(OrderItem)
date_ordered = models.DateTimeField(auto_now_add=True)
pickup_date = models.DateTimeField(blank=True, null=True)
pickup_place = models.CharField(max_length=100,default='')
description = models.CharField(max_length=100,default='')
is_approved = models.BooleanField(default=False)
is_returned = models.BooleanField(default=False)
demand_date = models.DateTimeField(blank=True, null=True)
def get_cart_items(self):
return self.items.all()
def __str__(self):
return '{0}'.format(self.owner)
def dict(self):
return {
'id':self.id,
'owner':self.owner,
'date_ordered':self.date_ordered.isoformat() if self.date_ordered != None else '',
'is_approved':'Approved' if self.is_approved == True else 'Declined',
'pickup_date':self.pickup_date.isoformat() if self.pickup_date != None else '',
'pickup_place':self.pickup_place,
'description':self.description,
'is_returned':self.is_returned,
'demand_date':self.demand_date.isoformat() if self.demand_date != None else '',
}
错误和回溯
"<Order: admin>" needs to have a value for field "id" before this many-to-many relationship can be used.
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/modules/smart_inventory/homepage/checkout
Django Version: 2.2.3
Python Version: 3.7.6
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'authentication',
'home',
'modules.user',
'modules.module_manager',
'modules.exampleapp',
'modules.smartInventory']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/Users/krtp/.pyenv/versions/3.7.6/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/Users/krtp/.pyenv/versions/3.7.6/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/Users/krtp/.pyenv/versions/3.7.6/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/krtp/.pyenv/versions/3.7.6/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
21. return view_func(request, *args, **kwargs)
File "/Users/krtp/Desktop/Services_PublicVersion/modules/smartInventory/views_client.py" in your_cart
41. items = order.items.all()
File "/Users/krtp/.pyenv/versions/3.7.6/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py" in __get__
527. return self.related_manager_cls(instance)
File "/Users/krtp/.pyenv/versions/3.7.6/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py" in __init__
840. (instance, self.pk_field_names[self.source_field_name]))
Exception Type: ValueError at /modules/smart_inventory/homepage/checkout
Exception Value: "<Order: admin>" needs to have a value for field "id" before this many-to-many relationship can be used.
先谢谢你。
这里的问题是,当用户下的Order对象为none时,您试图处理这种情况。多对多关系要求对象位于db中。ie当用户下的订单为空时,您要么必须保存它,要么应该使用create()而不是声明订单对象。
或者你可以试试这个
if (len(order)==0):
order = models.Order()
order.owner = user
order.save()
else:
order = order[0]
我目前有以下3种型号 现在我正试图以这种方式将值插入 我得到了错误 我看了这篇文章,但仍然无法找出问题所在。对此,如果有任何建议,我将不胜感激。
我正在尝试将团队添加到数据库中,但出现此错误。看了类似的问题,但没有一个解决了我的问题。(我是Django的新手) 我的代码看起来像: 形式。派克 模型。派克 意见。派克 当我尝试不使用表单时,例如仅使用标题字段: 它是成功地添加它。我在这里做错了什么?
保存表单时,我遇到以下错误:“”需要为字段“surveythread”设置一个值,然后才能使用此多对多关系。 模型。py: views.py: forms.py 错误消息: 回溯: 我是Django和Python的新手。如果需要,我可以发布调试跟踪或迁移文件,但我觉得这是一个简单的修复。显然,关键是我想为每个调查结果保存多个调查线程。 谢谢!
Car对象只是典型的JPA对象,没有对驱动程序的反向引用。 所以我试图通过这个来实现的是: 我可以使用详细的JSON视图阅读完整的汽车说明 或者我可以只读取汽车的Id,简写为jsonview 最重要的是,在创建新的驱动程序时,我只想传入汽车的JSON ID。这样,我就不需要在persist期间对Car进行不确定的读取,而只需要更新ID。 谢谢你。 更新:忘记了,我在创建驱动程序时通过的汽车的ID是
问题内容: 我有一个现有菜单,可以为您提供选项或。应该加载文件的内容并显示它。 但是,当我尝试运行此命令时,出现错误: 名称,成人,孩子= line.split(’,’) ValueError:需要多个值来解压 为什么会出现此错误? 问题答案: 这意味着其中有一条线,当您删除空格并按逗号分割时,不会精确地给出三段。实际上,它似乎只提供了1个(“需要多于1个值才能解压缩”),这表明一行完全没有逗号。
我的实体之间存在多对多关系:和。当我想在我的Symfony项目中将添加到订单时,我总是收到以下错误消息: 属性“suppliers”在类“Acme\AppBundle\Entity\PurchaseOrder”中不是公共的。也许您应该创建方法“setSuppliers()”? 当我自己在Entity中创建函数时: 我收到以下错误消息: 可捕获的致命错误:传递给Doctrine\通用\集合\Arra