我在一个应用程序中有一个系统模型,我想在另一个应用程序(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
。
答案 0 :(得分:1)
您应该覆盖save()
方法,而不是__save__()
,请参阅示例:
答案 1 :(得分:1)
重命名:
def __save__(...)
到
def save(...)
答案 2 :(得分:1)
save()
方法中不需要双下划线。这仅适用于Python魔术方法。