2013-02-15 86 views
-1

我有一个模型OrderItem它有一个外键order。我也有一个创建了以下这样一个OrderItem的功能,如何更新django foreignkey?

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

你必须检查,如果没有创建它存在,然后创建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) 
+0

这工作,非常感谢.. – 2013-02-15 18:55:16

+0

为什么你接受其他答案,如果这一个工程.. :) – UnLiMiTeD 2013-02-15 19:00:58

+0

我的坏...修复它.. – 2013-02-15 19:02:00

1

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

+0

是不工作的,其returnin 404页.. – 2013-02-15 16:56:36

+0

404返回,因为URL或找不到对象。在将Order对象添加到OrderItem之前,您确定该订单对象是否存在? – UnLiMiTeD 2013-02-15 18:31:46

+0

正如丹尼尔写的顺序和项目对象应该以相同的方式添加。 – UnLiMiTeD 2013-02-15 18:32:35

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) 
+0

这将在其他情况下工作,但在我的情况下,它没有,但谢谢.. – 2013-02-15 18:56:47