2016-08-26 8 views
0

基本的に私は外部キーキャリブレーションを備えたモデル機器を持っています。私は最新の作成された較正から 'cal_date'を得る 'latest_calibrated_date'として機器にフィールドを持っていたいと思います。django:モデルメソッドでモデルフィールドを更新しておくことは可能ですか?

def latest_calibration_date(self): 
     return Calibration.objects.filter(cal_asset__id = self.id).order_by('-id')[0].cal_date 

しかし、いくつかの他のアプリの目的のために、私はこの方法ではないが、フィールドを作成したいと思います:ここで私は今持っているものです。ですから、私はlatest_calibration_date = models.DateField()を使用し、新しい較正が追加されるたびに更新することを考えています。どうすればこのことができますか?

+0

保存メソッドをオーバーライドします。 –

+0

@DanielRosemanええ、それは私が持っているように思えます。私はそのplsをいかに正確に行うことができるかについてもっと詳しく説明できますか? –

答えて

1

ダニエルローズマンが指摘されていますが、Calibrationモデルのsaveメソッドを無効にすることができます。例えば:あなたの変数を格納するためParameterモデルを作成することによって、例えば、多くの方法であなたのパラメータを格納することができます

class Calibration(model.Model): 
    # your fields 

    def save(self, *args, **kwargs): 
     super(Calibration, self).save(*args, **kwargs) 

     # update latest calibration date 

save

class Parameter(models.Model): 
    key = models.CharField(max_length=255, unique=True) 
    value = models.IntegerField() 
    description = models.TextField(blank=True, null=True) 

    def __str__(self): 
     return self.key 

し、再び:あなたが好きな

import time 

p = Parameter.objects.get(key='LATEST_CALIBRATION_DATE') 
p.value = time.time() # save in UNIX timestamp 
p.save() 

または任意の形式。

関連する問題