我怎样才能更新django foreignkey?

时间:2013-02-15 16:45:06

标签: django django-models

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

感谢任何形式的帮助。

3 个答案:

答案 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)