0

我在一个应用程序中有一个系统模型,我想连接到另一个应用程序(django-helpdesk)中的队列模型。如果没有为 System object 选择 Queue 对象,我想初始化一个新的 Queue 对象,使用来自 System 的信息来生成它。

我已经涵盖了队列的所有必填字段,但这似乎不起作用。它不会抛出错误;它只是从不生成新的 Queue 对象。任何人都可以发现有问题的问题,或推荐另一种解决方法吗?

#models.py

import helpdesk

....

class System(models.Model):
    queue = models.ForeignKey(
        helpdesk.models.Queue,
        blank = True,
        null = True,
        editable = True,
        verbose_name = _('Queue'),
    )

    def __save__(self, *args, **kwargs):
        if not self.queue:
            slug = slugify(self.name)
            queue = helpdesk.models.Queue(title=self.name, slug=slug)
            queue.save()
        self.queue = queue.pk
        super(System, self).save(*args, **kwargs)

编辑:作为参考,除了对方法使用双下划线之外,还有一个错误save()。该行self.queue = queue.pk应改为self.queue = queue.

4

3 回答 3

1

您应该覆盖save()方法,而不是__save__(),请参阅示例:

于 2013-09-08T22:12:17.747 回答
1

改名:

def __save__(...)

def save(...)
于 2013-09-08T22:12:46.470 回答
1

方法中不需要双下划线save()。这仅适用于 Python 魔术方法。

于 2013-09-08T22:13:01.010 回答