2014-02-14 54 views
1

我試圖根據FK字段的值來定義字段的默認值。 我已經繞了一個搜索,發現這個(它適用於我自己的模型):django - 基於FK值的默認值

def __init__(self, *args, **kwargs): 
    super(Line, self).__init__(*args, **kwargs) 
    if not self.id: 
     self.max_payout = self.coin.LineMax() 

模型「線」參考模型「硬幣」是這樣的:

coin = models.ForeignKey(Coin) 

錯誤我米在編譯的時候得到的是:

Exception Type: RelatedObjectDoesNotExist at /admin/acb_lines/line/add/ 
Exception Value: Line has no coin. 

我猜這是因爲,當你開始添加一條線,「硬幣」是一個沒有設置尚未值的下拉菜單。

[編輯] 我來添加一個默認值硬幣,以避免RelatedObjectDoesNotExist錯誤,但問題仍未解決

+0

將'super'的'__init__'移動到您的邏輯之下。 – karthikr

+0

@AnkurAnkan:請不要使用代碼跨度('like this')來表示不是代碼或代碼關鍵字的單詞。例如,'def'或'__init__'應該在代碼範圍內,但'這真的不應該'。謝謝! –

+0

@karthikr對不起,真的很新,能否提供一個例子? –

回答

0

這聽起來像您建立Line之前,請​​。也許你可以切換這個。如果不是,請考慮在Coin.__init__中設置Line.max_payout。否則,請覆蓋save()函數以包含此邏輯。但是,要知道,如果你這樣做,它將設置爲批量操作,並且設置值將被延遲,直到將對象保存到數據庫中,如果以編程方式創建對象(而不是通過表單),則可能會造成問題。

+0

'硬幣'已經創建(我需要它來創建線),我添加了一個硬幣的默認值,但仍然無法正常工作。 我的主要問題是爲用戶設置一個默認值,然後他/她可以決定是否修改它。 它背後的想法是在它被保存到數據庫之前 –