2016-04-21 69 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

相關問題