2017-01-04 12 views
0

私は以下のDjangoモデルを持っており、TransactionDateTimeモデルクラスのクラス内でステータスフィールドを動的に設定し変更するメソッドを作成したいと思っています子TransactionTaskクラス・モデル内のis_taskcomplete内のFalse値の数に基づいています。私は下の作成メソッドを作成する際に刺すが、私は失われています。どんな助けでも大歓迎です。前もって感謝します。Django - 保存と更新時にモデル内でメソッド呼び出しを呼び出す方法

@python_2_unicode_compatible # only if you need to support Python 2 
class TransactionDateTime(models.Model): 
    room = models.ForeignKey(Room, on_delete = models.CASCADE) 
    start_dy = models.DateField() 
    end_dy = models.DateField(blank=True, null=True) 

    def create(self): 
     t1 = TransactionDateTime.objects.get(pk=self.pk) 
     qy = t1.transactiontask_set.all() 
     value = qy.filter(is_taskcomplete = False).count() 
     if value > 0: 
      return "Complete" 
     else: 
      return "Incomplete" 


    status = TransactionDateTime.create(self) 

    def __str__(self): 
     return str(self.start_dt) 




@python_2_unicode_compatible # only if you need to support Python 2 
class TransactionTask(models.Model): 
    transactiondatetime = models.ForeignKey(TransactionDateTime, on_delete = models.CASCADE) 
    is_taskcomplete = models.BooleanField(default = False) 


def __str__(self): 
    return str(self.transtaskname) 
+0

は、それは本当に不明だ何あなたはしようとしている。そのための 'status'定義は何ですか?それはなぜクラス上のメソッドを呼び出すのですか? –

+0

目的は、上で説明したいくつかのロジックセットに基づいて、親モデルのフィールド(ステータス)を動的に更新するメソッドを作成することです。 –

+0

しかし...あなたはフィールドを定義していません。実際にその情報をデータベースに保存しますか?または、必要なときに計算するだけですか? –

答えて

0

このようにした理由はまだわかりません。フィールドにデータを格納する場合は、フィールドを定義する必要があります。そのフィールドの値を計算するメソッドが必要な場合は、通常のメソッドを作成し、そのメソッドにフィールドに直接値を代入させます。

status = models.CharField(max_length=10, blank=True) 

def create(self): 
    qy = self.transactiontask_set.all() 
    value = qy.filter(is_taskcomplete = False).count() 
    if value > 0: 
     self.status = "Complete" 
    else: 
     self.status = "Incomplete" 

(私もcreateは何も作成しない方法のための奇妙な名前であると主張しているが、単にフィールドの値を提供しますが、気にしないだろう。)

関連する問題