在另一个应用中创建模型实例

时间:2013-09-08 22:07:32

标签: django django-models

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

我已经涵盖了Queue的所有必填字段,但这似乎不起作用。它不会引发错误;它永远不会生成新的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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

重命名:

def __save__(...)

def save(...)

答案 2 :(得分:1)

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