1

これは私が以前に提起した質問に関連しています..わかりました、ある日付を別の日付から差し引いて「total_days」を返すカスタム保存メソッドを持つモデルがあります:

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" から週末の日数を差し引いた値を取得するには、(モデルまたはビューのいずれかで) ロジックを微調整するにはどうすればよいですか?

4

1 に答える 1

0

これには Python の datetime ライブラリを使用できます。

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)
于 2013-01-21T20:02:43.250 に答える