2016-04-21 110 views
0

就像我在标题中说的,我需要自动填充我的Django模型的一个字段,具体来说是一个DateField,添加了我在同一模型表单中指定的X天数。如何使用相同模型的IntegerField将日期添加到django模型上的日期时间字段?

在我的情况下,我需要添加我在“total_days”中输入日期的天数,并将结果保存到“end_day”中。

这里是模型:

class Certificate(models.Model): 

    employee = models.ForeignKey(Employee) 
    license_type = models.IntegerField(choices=LICENSE_TYPES, default=1) 
    disease_type = models.IntegerField(choices=DESEASE_TYPES, blank=True, null=True) 
    total_days = models.PositiveIntegerField() 
    extra_days = models.PositiveIntegerField(Default=0) 
    start_day = models.DateField() 
    end_day = models.DateField(, editable=False) 
    doctor = models.ForeignKey(Doctor) 
    diagnostic = models.CharField(max_length=150) 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 
    created_by = models.ForeignKey(User, related_name='certificates_created_by', editable=False) 
    modified_by = models.ForeignKey(User, related_name='certificates_modified_by', editable=False, blank=True, null=True) 


    class Meta: 
     verbose_name = "certificado" 
     verbose_name_plural = "certificados" 

    def __str__(self): 
     pass 

嗯,我尝试使用“timedelta”但我不能使用START_DAY场,因为不能检测到这个像一个整数。 timedelta需要一个整数参数。

任何关于如何做到这一点的想法?

现在我直接在视图上执行此操作并将结果发送到模板。但用户需要将其从第一个保存到数据库中。

非常感谢!

+0

首先你不想把它添加到你的模型中!你必须创建一个函数,如:def total_day(self):>>> return number of days! – rakwen

+0

现在你如何计算总日? – rakwen

+0

是不是一个计算,我把这个手动的形式!是医生证书,他给一个人多少天的休息时间。我必须在表格中填写这些天数(如果医生让我休息4天,我会在total_days输入这个数字)。 – marcosgue

回答

2

您可以创建get_end_date函数,并且可以将开始日期作为参数传递给它。根据你的编码方便。

from datetime import datetime, timedelta 
start_date = datetime.strptime(start_day, "FORMAT") #start_day should be from your model and FORMAT as it is 
end_day = start_date + timedelta(days=no_of_days_to_add) 
end_date = end_day.strftime(end_day, <FORMAT>) 
+0

是的,但我需要保存end_date当我创建一个新的对象。在表格中,我必须将开始日期和Total_days放在一起,当我把保存!我需要end_day自动保存数据库中的正确值(start_day + total_days)。 – marcosgue

+0

处理表单时,可以通过将表单值的开始日期和总天数作为变量和函数传递给结束日期来调用该函数。然后您可以将该值保存到数据库。希望澄清。 –

+0

哦,是的,我在创作视图上做了类似的事情。但是当我使用管理面板不起作用。 – marcosgue

相关问题