当第三个应用程序隐含地创建实例(代理模型)时,我无法找出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
你知道问题出在哪里吗?