2013-02-15 88 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