我有一个名为的模型,它与一个关系Calculation
相连。第一次创建模型对象时,我想启动某个字典。稍后我填写值并保存对象。Measure
OneToMany
Calculation
从数据库加载对象时不应创建字典,并且在我发出save()
.
我对 Signals ( 1 ) 和 Factories ( 1 , 2 ) 感到不满,但我仍然对如何实现这一点感到有些困惑。
模型.py
class Calculation(models.Model):
measure = models.ForeignKey(Measure)
modified_time = models.DateTimeField(auto_now = True)
raw_parameters = hstore.DictionaryField(db_index=True, null=True)
result = models.DecimalField(null=True,max_digits=15, decimal_places=2)
def __init__(self, *args, **kwargs):
# init the relation
super(Calculation, self).__init__(*args, **kwargs)
# init a list of required parameters with empty values
self.raw_parameters = dict((k,None) for k in self.measure.parameters.all().values_list('name',flat=True))
现在的方式并不好,因为它也会在加载现有对象时执行,并且会覆盖raw_parameters
. 我试过重载一个create
函数,但没有用。
**姜戈新手。谢谢。