2013-01-21 54 views
1

這關係到我早先提出.. ok了問題,所以我有一個自定義的保存方法,從另一個和收益減去一個日期典範「TOTAL_DAYS」:和datetime方法計算平日

class LeaveRequest(models.Model): 
employee = models.ForeignKey(UserProfile) 
supervisor = models.ForeignKey(UserProfile, related_name='+', blank=False, null=False) 
submit_date = models.DateField(("Date"), default=datetime.date.today) 
leave_type = models.CharField(max_length=64, choices=TYPE_CHOICES) 
start_date = models.DateField(("Date")) 
return_date = models.DateField(("Date")) 
total_days = models.IntegerField() 
notes = models.TextField(max_length=1000) 

def __unicode__ (self): 
    return u'%s %s' % (self.employee, self.submit_date) 

def save(self, *args, **kwargs): 
    self.total_days = (self.return_date - self.start_date).days 
    super(LeaveRequest, self).save(*args, **kwargs) 

    class Admin: 
      pass 

    class Meta: 
      ordering = ['-submit_date'] 

這個效果很好,除了週末不考慮。我將如何調整邏輯(無論是在模型中還是在視圖中)以使「total_days」減去週末天數?

回答

0

您可以使用Python日期時間庫。

請參閱this post python實現。

from datetime import date, timedelta 

...  

def save(self, *args, **kwargs): 
    daygenerator = (self.start_date + timedelta(x+1) for x in xrange((
        self.return_date - self.start_date).days)) 
    self.total_days = sum(1 for day in daygenerator if day.weekday() < 5) 
    super(LeaveRequest, self).save(*args, **kwargs) 
+0

去了你介紹的帖子;根據這個答案寫了一個新的保存定義(與您的答案基本相同,只是措詞不同),測試 - 像魅力一樣工作。先生,我很感激。 – kjarsenal