我正在使用Django 1.10作为后端构建应用程序。 是否可以从同一实例设置模型字段相对于另一个模型的默认值?
我特别需要将second_visit's
默认设置为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
答案 0 :(得分:4)
在拥有模型实例之前,不能在依赖于另一个字段的字段上指定默认值。要实现相同目的,您可以覆盖模型的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 :(得分: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