2016-12-27 49 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 
相关问题