每当我触发它时,我都会尝试使用Django生成自动数据库条目。
例如,假设我有这样的模型:
class status_entry(models.Model):
name = models.TextField()
date = models.DateField()
status = models.BooleanField()
我有几个模型条目,如:
1 - "bla bla" - 2009/11/6 - true
2 - "bla bla" - 2009/11/7 - true
3 - "bla bla" - 2009/11/10 - true
因此,您可以看到我的第2和第3个参赛作品,我有2个缺席参赛日(2009/11/8和2009/11/9),通过创建我想要的一些视图或脚本 自动填写这些缺席的日期条目,例如:
id name date status
------------------------------------
1 - "bla bla" - 2009/11/6 - true
2 - "bla bla" - 2009/11/7 - true
3 - "bla bla" - 2009/11/8 - false
4 - "bla bla" - 2009/11/9 - false
5 - "bla bla" - 2009/11/10 - true
谢谢
答案 0 :(得分:0)
您可以覆盖save
并在那里执行自动填充(daterange
功能取自here):
from datetime import timedelta
def daterange(start_date, end_date):
for n in range((end_date - start_date).days):
yield start_date + timedelta(n)
class StatusEntry(models.Model):
name = models.TextField()
date = models.DateField()
status = models.BooleanField()
def __unicode__(self):
return "%s - %s - %s" % (self.name, unicode(self.status), unicode(self.date))
def save(self, fill=True):
if fill and not self.id: # autofill on insert, not on update
newest = StatusEntry.objects.all().order_by("-date")[:1]
if newest and newest[0].date < self.date:
for date in daterange(newest[0].date + timedelta(1), self.date):
entry = StatusEntry(name=self.name, date=date, status=False)
entry.save(fill=False)
super(StatusEntry, self).save()
你也可以使用signals或者使用触发器,例如hughdbrown建议