2016-12-27 46 views
2

我正在構建一個使用Django 1.10作爲後端的應用程序。 是否可以設置模型字段相對於同一實例中的另一個模型的默認值?Django模型:設置相對於另一個字段的默認值

我特別需要設置second_visit's默認爲3周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

後,您不能分配上依賴於另一個字段的默認值有一個模型實例之前。爲了達到同樣可以覆蓋模型save()方法:

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 
相關問題