隐式创建模型实例时,Django信号不起作用

时间:2016-05-06 12:19:25

标签: python django django-models django-signals django-inheritance

当第三个应用程序隐含地创建实例(代理模型)时,我无法找出signal无效的原因。

我在项目中使用第三方应用Django-Quiz。有一个名为Sitting的模型。由于我想在管理员中看到该表,因此我必须创建proxy模型QuizSittingProxy,以便为__str__设置__unicode__Sitting方法

每次User进行测验时,都会创建新的Sitting对象。分别创建QuizSittingProxy对象。

class QuizSittingProxy(Sitting):
    """
    Holds information about taken Language Tests (in admin)
    """
    class Meta:
        proxy = True

    def __str__(self):
        return '{}: {}, score: {}'.format(self.user.username, self.quiz.title, self.current_score)

我想将测验结果分配给当前User,因此我创建了signal

问题是,只有在admin中手动创建signal对象时,此QuizSittingProxy才有效。

值得一提的是,每次User进行测验时都会创建它。

@receiver(post_save,sender=QuizSittingProxy)
def assign_level(sender, instance, created, **kwargs):
    print 'QUIZSITTING POST SAVE'
    # user = instance.user
    # quiz = instance.quiz
    # score = len(instance.user_answers.keys()) / instance.current_score

你知道问题出在哪里吗?

0 个答案:

没有答案