我正在使用人工管理系统,其中用户申请请假,并且只有在status == '0'
我已经尝试过使用信号,但是每次管理员保存时,它都会被注册到表中。我读过,最好重写save()
而不是使用信号
STATUS_CHOICES = (('0', 'Rejected'),('1', 'Accepted'),)
class Employee(models.Model):
employee_ID = models.CharField(max_length = 20)
name = models.CharField(max_length = 50)
user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
status = models.CharField(max_length = 15, choices = STATUS_CHOICES)
def save(self, *args, **kwargs):
if Leave.status == '1':
history = History()
history.employee_ID = self.employee_ID
history.name = self.name
history.save()
print('data sent')
class History(models.Model):
name = models.CharField(max_length = 50)
employee_ID = models.CharField(max_length = 20)
在覆盖save
方法时我一直在犯什么错误?
答案 0 :(得分:1)
您错过了重要的部分super(Employee, self).save()
def save(self, *args, **kwargs):
super(Employee, self).save()
if self.status == '0':
history = History.objects.create(
employee_ID = self.employee_ID,
name = self.name,
)
print('data sent')
现在您将保存模型,如果状态为0(代码中为1),则将创建一个历史记录模型条目(也许添加日期时间)