我有一个模型OrderItem
,它有一个外键order
。我还有一个创建OrderItem的函数,如此,
OrderItem.objects.create(shopping_id=_shopping_id(request),
quantity=quantity,
item=i,
created_by=anon_user,
modified_by=anon_user)
正如你所看到的,我没有包括order
,因为我无法理解我是如何做到的。
我收到错误order_items.order_id may not be NULL
这是我的模型OrderItem
class OrderItem(SmartModel):
shopping_id = models.CharField(max_length=50,db_index=True)
quantity = models.IntegerField(default=0)
item = models.ForeignKey(Item)
order = models.ForeignKey(Order)
感谢任何形式的帮助。
答案 0 :(得分:1)
为什么添加order
与添加item
有什么不同?它们都是ForeignKeys,在这两种情况下,您只需将相关对象作为关键字参数传递。
答案 1 :(得分:0)
这不起作用吗?
order, created = Order.objects.get_or_create(...)
然后
OrderItem.objects.create(order=order, shopping_id=_shopping_id(request),
quantity=quantity,
item=i,
created_by=anon_user,
modified_by=anon_user)
答案 2 :(得分:0)
如果没有创建它,你必须检查它是否存在,然后创建OrderItem对象。 代码应如下所示:
try:
order = Order.objects.get(pk=order_id)
except:
order = Order.objects.create(name=name)
OrderItem.objects.create(shopping_id=_shopping_id(request),
quantity=quantity,
item=i,
order=order
created_by=anon_user,
modified_by=anon_user)