2011-01-07 15 views
0

私はデータを保存するためのアプリケーションを構築しています。そのデータを使って計算したものですが、データをあるモデルに保存し、他のモデルで計算します。だから、モデルはこのようなものです:私は「self.one」と「self.twoは」値なしであることを訴えてValueErrorを持って継承されたdjangoモデルでデータを保存する

class FreshData(models.Model): 
    name = models.CharField(max_length=20) 
    one = models.IntegerField() 
    two = models.IntegerField() 

    def save(self, *args, **kwargs): 
     Calculations() 
     Calculations.three = self.one + self.two 
     super(FreshData, self).save(*args, **kwargs) 
     Calculations.save() 

class Calculations(FreshData): 
    three = models.IntegerField() 

。私は私のデザインが間違っていると間違っていると思うし、djangoは関連するデータを保存するためのより良い/よりシンプルな方法を持っています。

答えて

2

あなたはクラスをインスタンス化しましたが、変数にcalculations()を格納せず、クラス名に大文字を付けました。また、superの呼び出しが間違っているため、Blogではなくモデルを参照する必要があります。

self.oneの理由は、おそらくスーパーセーブコールの呼び出し前に作業を行っているためです。だから代わりにあなたの仕事を "あなたの自己"を保存した後にしてください。

class FreshData(models.Model): 
    name = models.CharField(max_length=20) 
    one = models.IntegerField() 
    two = models.IntegerField() 

    def save(self, *args, **kwargs): 
     super(FreshData, self).save(*args, **kwargs) 
     calculations = Calculations() 
     calculations.three = self.one + self.two 
     calculations.save() 

class Calculations(FreshData): 
    three = models.IntegerField() 

はそれに加えて私はあなたがFreshDataからnameonetwoフィールドを継承するあなたの例CalculationsFreshDataから延長する必要がある理由を確認していません。あなただけの別のモデルでの計算を保存したい場合は、ちょうど戻ってそうのように元のデータへの参照を格納:

class Calculations(models.Model): 
    fresh_data = models.ForeignKey(FreshData) 
    three = models.IntegerField() 

は、それからちょうどあなたのCalculationsをインスタンス化する際にfresh_dataに合格することを確認してください:

def save(self, *args, **kwargs): 
    super(FreshData, self).save(*args, **kwargs) 
    calculations = Calculationrs(fresh_data=self) 
    ... 
+0

"FreshData"にレコードを保存すると "Calculated"に自動的に "3"を保存したいと言っています。外出先で私はそれをすることができますか? – aldeano

+0

答えの最後に少し追加しました。 CalculationsインスタンスがFreshDataインスタンスへの参照を返すようにするには、インスタンス化の際に参照を渡す必要があります。外部キーを使用すると、データベース内の2つのモデル(レコード)間の関係を維持することができます。 –

+0

ありがとう! "fresh_data"を渡すことで、それは私が望むやり方で動作します。 – aldeano

関連する問題