2016-08-16 8 views
0

シッティング日付を保存するための1つのモデルとシフト日付を保存するもう1つのモデルを設計しました。 2つのモデルは、外部キーによってリンクされています。今私は、シフト日付を作りたいシフト日付がシッティング日付に更新されない

Sitting Date  Shifting Date 
2016-09-01  Sept. 15, 2016 
2016-09-08  Sept. 19, 2016 

:として

私は他の日付に既存座って日付を変更シフトモデルを使用して
class Shiftdate(models.Model): 
    shift_date = models.DateField(blank=False,unique=True) 
    sit_date = models.ForeignKey(Sitting, 
           on_delete=models.CASCADE) 

class Sitting(models.Model): 
    sit_date = models.DateField(blank=False,unique=True) 
    cut_off_date = models.DateField(null=True, blank=True) 
    ballot_date = models.DateField(null=True, blank=True) 
    sess_no = models.ForeignKey(Session, 
           on_delete=models.CASCADE) 
    genre = TreeForeignKey('Genre', null=True, blank=True, db_index=True) 

シフトモデル:ここに私の2つのモデルがあります新しい着席日に。このために、私はシッティングモデルで以下のメソッドを定義します。

def get_shift_date(self): 
      return self.sit_date.shift_date 

このシフト日付はシッティングモデルに保存されます。私は以下のセーブ方法を定義します:

def save(self, *args, **kwargs):  

      self.sit_date = self.get_shift_date() 
     super(Sitting, self).save(*args, **kwargs) 

しかし、これはシフト日付を着席日として返しません。誰かがこのコードを修正する手助けをすることができますか?

答えて

0

ここに矛盾したif文があります。 sit_dateが空白の場合、保存メソッドはget_shift_dateのみを呼び出します。その方法の中では、何かを返すのはsit_dateではなく、です。したがって、sit_dateはNoneにしか設定できません。

+0

だから私はとしてget_shift_dateを()に変更:** 戻りself.sit_date.shift_date をして、(自己、*引数を保存defの方法 を保存します:def(自己を)get_shift_date :として)だから私は(get_shift_dateを変更 – ohid

+0

kwargsから): self.sit_date = self.get_shift_date() スーパー(お座り、自己).SAVE(* argsを、** kwargsから) しかし、それでもまだ、私は実行可能な得ることができるように、あなたの答えを精巧でし – ohid

+0

を動作しません。ソリューション – ohid

関連する問題