-1

我有一个模型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)

任何形式的帮助表示赞赏。

4

3 回答 3

1

为什么添加与添加order有任何不同item?它们都是 ForeignKey,在这两种情况下,您只需将相关对象作为关键字参数传递。

于 2013-02-15T16:50:28.243 回答
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)
于 2013-02-15T16:53:44.603 回答
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)
于 2013-02-15T18:40:30.267 回答