功能保存模型djang

2024-04-25 22:47:31 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个应用模型。意思很简单,作者提交申请,现场管理员指定承包商执行,承包商在完成收到的申请后完成。一切似乎都很好,应用程序模型被创建,确保管理员选择承包商后,应用程序立即收到关闭状态。你知道吗

但是有一个问题我无法处理,当管理员关闭应用程序(状态为“Completed”)时,应用程序不会获得状态Completed,因为艺术家是因为模型中的save函数而被分配给它的。你知道吗

如何使申请的状态完整,即使承包商被任命为该申请?我事先请你原谅我这样提出这个问题,我还是个初学者。(非常感谢所有能帮忙的人)

你知道吗型号.py你知道吗

class Application(models.Model):
    STATUS_CHOICES = (
        ('In_the_work', 'В работе'),
        ('New', 'Новая'),
        ('Complited', 'Завершена')
    )

 author = models.ForeignKey('auth.User', related_name = '+', verbose_name = 'Автор')
 title = models.CharField(max_length=50, verbose_name = 'Заголовок')
 text = models.TextField(verbose_name = 'Описание проблемы')
 room = models.CharField(max_length = 4, verbose_name = 'Кабинет')
 published_date = models.DateField(blank=True, null=True, default = 
 datetime.datetime.now, verbose_name = 'Дата')
 status = models.CharField(max_length=15, choices=STATUS_CHOICES, 
 default='Новая', verbose_name = 'Статус')
 owner = models.ForeignKey('auth.User', related_name = '+', null = True, 
 blank = True, limit_choices_to={ 'groups__name': 'Техническая поддержка'}, 
 verbose_name = 'Исполнитель') 

def save(self, *args, **kwargs):
    if self.owner != None:
        self.status = 'In_the_work'

    super(Application, self).save(*args, **kwargs)

Tags: name模型selftrue应用程序verbosemodels状态
1条回答
网友
1楼 · 发布于 2024-04-25 22:47:31

我不知道你所说的“艺术家”被分配到申请表是什么意思。你知道吗

当您的意思是将承包商分配给它时,我认为您指的是将“所有者”(所有者字段值)分配给应用程序模型。如果是这种情况,那么错误是,在save方法中,您正在检查所有者是否不同于None,在这种情况下,您总是将状态覆盖为“in the work”。你知道吗

所以也许解决办法是:

def save(self, *args, **kwargs):
    if self.status != 'Complited' and self.owner is not None:
        self.status = 'In_the_work'
    super(Application, self).save(*args, **kwargs)

这样,只有当状态与complited不同时才覆盖状态,而不是每次所有者不是None时。你知道吗

谢谢你。你知道吗

相关问题 更多 >