2016-12-12 4 views
0

私は、ユーザが離陸時間と着陸時間を入力し、フォームがその期間より下の形式で返ってくる、パイロット用の小さなログブックを作成しようとしています:02:34時間ie 2時間34分。 models.py側の これは私がそれを設定する方法である:model.Durationはここに答えていないようですSubflow ModelFormの2つの時間フィールド

take_off_time = models.TimeField() 
land_time = models.TimeField() 
tot_time_field = models.DurationField() 

... forms.pyで は、これまでのところ、私は単純にモデルをレンダリング。

だから、質問は以下のとおりです。

  1. iはdurationFieldの代わりに何を使うだろうか?

  2. 入力を受け取り、計算をどのように行うことができますか?

    def get_total_time(self): 
        self.tot_time_field = self.land_time - self.take_off_time 
        return self.tot_time 
    

    をして、フォームでtot_timeを使用しますが、私はこれが正しいことを確認していない:

は、私はシンプルなmodels.pyで試してみました。

+0

デュレーションフィールドを使用して、あなたの難しさは何ですか?あなたはあなたのテイクから抽象化することができ、土地を正しく扱うことができるpython timedeltaが必要ですか? –

+0

こんにちはヘド、回答ありがとう、言い換えれば私の例は正しいですか?タイムデルタを実装する必要がありますか? – Heliomaster

+0

datetimeオブジェクトを省略すると、timedeltaオブジェクトが生成されるため、実際に保存する前にモデルのsaveメソッドを上書きしてget_total_timeを呼び出すことができます –

答えて

0

Hedde van der Heideが正しい方向に私を置き、私はついに答えを見つけました。 まず私はそうのようなTOTAL_TIMEを設定します。

def time_delta(self): 
    t = self.land_time - self.take_off_time 
    return str(td) 

その後、私はそれを保存:モデル、少なくとも最後にではなく、

tot_time_field = models.CharField(max_length=200,blank=True)because i couldn't make the duration field work. 

def save(self,*args,**kwargs): 
     self.tot_time_field = self.time_delta() 
     super(Log,self).save(*args,**kwargs) 

私はモデルでtot_time_field = models.DurationField()を変更TimeFieldの代わりに最初の2つのモデルをDateTimeField に変更する必要がありました。これは、time_delta(td)がそれ以外の場合は機能しないためです。 models.py:

take_off_time = models.TimeField() 
land_time = models.TimeField() 
total_time_field = models.Charfield() 

def time_delta(self): 
    t = self.land_time - self.take_off_time 
    return str(td) 

def save(self,*args,**kwargs): 
    self.tot_time_field = self.time_delta() 
    super(Log,self).save(*args,**kwargs) 

希望に役立ちます....

0
class Foo(models.Model): 
    def save(Foo, self).save(*args, **kwargs): 
     if not self.tot_time_field: 
      self.tot_time_field = self.get_total_time() 
     super(Foo, self).save(*args, **kwargs) 
関連する問題