2016-12-27 15 views
2

私はバックエンドとしてDjango 1.10を使用してアプリケーションを構築しています。 同じインスタンスからモデルフィールドのデフォルトの相対的な相対位置を別のモデルに設定することはできますか?Djangoモデル:別のフィールドに相対的なデフォルトを設定します

私は、特にあなたがモデルのインスタンスを持つ前に、別の依存のフィールドにデフォルト値を割り当てることはできませんfirst_visit

class SomeModel(models.Model): 
    first_visit = models.DateField() 
    second_visit = models.DateField(default= second_visit_default) 

    def second_visit_default(self): 
     # Set second_visit to 3 weeks after first_visit 

答えて

3

後3週間であることをsecond_visit'sデフォルトを設定する必要があります。

class SomeModel(models.Model): 

    ... 

    def save(self, *args, **kwargs): 
     self.second_visit = self.first_visit + datetime.timedelta(weeks=3) 
     super().save(*args, **kwargs) 
1

あなたはsaveを上書きするか、pre_save

from django.db.models.signals import pre_save 
from django.dispatch import receiver 


@receiver(pre_save, sender=SomeModel) 
def my_handler(sender, instance, **kwargs): 
    instance.second_visit = # Set second_visit to 3 weeks after instance.first_visit 
を使用することができます。同じことを達成するには、モデルの save()メソッドをオーバーライドすることができます
関連する問題