我的项目中有一个Scheduler
模型。这个Scheduler
模型说明了用户想要对项目执行某些操作的频率。可能有很多项目和用户,所以我想节省一些空间和查询时间。
每个项目都有一个Scheduler
对象分配给自己。
class Scheduler(models.Model):
monday = models.BooleanField(default=False)
tuesday = models.BooleanField(default=False)
wednesday = models.BooleanField(default=False)
thursday = models.BooleanField(default=False)
friday = models.BooleanField(default=False)
saturday = models.BooleanField(default=False)
sunday = models.BooleanField(default=False)
hour_1 = models.BooleanField(default=False)
hour_2 = models.BooleanField(default=False)
hour_3 = models.BooleanField(default=False)
hour_4 = models.BooleanField(default=False)
hour_5 = models.BooleanField(default=False)
hour_6 = models.BooleanField(default=False)
hour_7 = models.BooleanField(default=False)
hour_8 = models.BooleanField(default=False)
hour_9 = models.BooleanField(default=False)
hour_10 = models.BooleanField(default=False)
hour_11 = models.BooleanField(default=False)
hour_12 = models.BooleanField(default=False)
hour_13 = models.BooleanField(default=False)
hour_14 = models.BooleanField(default=False)
hour_15 = models.BooleanField(default=False)
hour_16 = models.BooleanField(default=False)
hour_17 = models.BooleanField(default=False)
hour_18 = models.BooleanField(default=False)
hour_19 = models.BooleanField(default=False)
hour_20 = models.BooleanField(default=False)
hour_21 = models.BooleanField(default=False)
hour_22 = models.BooleanField(default=False)
hour_23 = models.BooleanField(default=False)
hour_24 = models.BooleanField(default=False)
def save(self,*args,**kwargs):
scheduler = Scheduler.objects.filter(**{x:y for x,y in self.__dict__.iteritems() if x.startswith('hour') or x.endswith('day')})
if scheduler:
return scheduler
super(Scheduler, self).save(*args, **kwargs)
当用户创建新项目并设置计划时,我希望Django检查是否存在此类Scheduler对象。如果是,请不要创建具有相同属性的新调度程序,而不是将现有对象分配给此项。这可以覆盖save
方法。
问题是当User
想要更新Scheduler
时。我希望Scheduler
不要更新。应该创建新的Scheduler
,而不是那样,因为旧的调度程序可能被另一个项目使用。
我应该在save
方法中添加什么内容?