2014-02-14 37 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

'硬币'已经创建(我需要它来创建线),我添加了一个硬币的默认值,但仍然无法正常工作。 我的主要问题是为用户设置一个默认值,然后他/她可以决定是否修改它。 它背后的想法是在它被保存到数据库之前 –