python - Django:访问模型实例
问题描述
我有一个模型叫OrderItem
class OrderItem(models.Model):
customer = models.ForeignKey(
User, on_delete=models.SET_NULL, blank=True, null=True)
product = models.ForeignKey(
Product, on_delete=models.SET_NULL, blank=True, null=True)
order = models.ForeignKey(
Order, on_delete=models.SET_NULL, blank=True, null=True)
quantity = models.IntegerField(default=0, null=True, blank=True)
date_added = models.DateTimeField(auto_now_add=True)
和一个名为Order
class Order(models.Model):
customer = models.ForeignKey(
User, on_delete=models.SET_NULL, blank=True, null=True)
date_ordered = models.DateTimeField(auto_now_add=True)
complete = models.BooleanField(default=False, null=True, blank=False)
transaction_id = models.CharField(max_length=200, null=True)
现在views.py
我有一个OrderItem 模型 order
实例。在我的Order 模型中,我需要将其order
实例设置为完成。我正在尝试如下操作:
orderID = OrderItem.objects.filter(order_id=4)
#lets say there are more than one order_id with the value of 4
for order in orderID:
order = Order.objects.get(id=orderID)
order.complete=True
order.save()
这段代码给了我:
ValueError: The QuerySet value for an exact lookup must be limited to one result using slicing.
如何解决这个问题?
解决方案
orderID
在您的示例中可以是列表,其大小可能大于一。这使得以下操作失败:
orderID=OrderItem.objects.filter(order_id=4)
#lets say there are more than one order_id with the value of 4
for order in orderID:
order = Order.objects.get(id=orderID) # FAIL: list passed as ID
order.complete=True
order.save()
您应该order
作为参数传递给.get()
函数或使用相关模型,例如
order_items=OrderItem.objects.filter(order_id=4)
for order_item in order_items:
order = order_item.order
order.complete=True
order.save()
推荐阅读
- android - RxAndroidBle - 使用 CALLBACK_TYPE_ALL_MATCHES 或 CALLBACK_TYPE_FIRST_MATCH 时的不同结果
- windows - MXE + CMake:如何在 Windows 上部署静态链接的 Qt 应用程序?
- websocket - Websocket 连接失败
- openshift - 推送新仓库并开始构建后的openshift node.js错误
- java - 从配置或属性文件中加载巨大的枚举
- html - Angular 的 fxFlex API 的问题
- c++ - 如何将我的 Xcode C++ 终端应用程序转换为在普通的 ole Linux 机器上构建?
- scala - Twilio Java SDK 中的分页仅返回第一页
- javascript - 从另一个目录 AngularJS 下载文件
- python - 从网页上抓取 2 个不同格式的表格 - Beautiful Soup