Django:从它的保存方法中查询模型

时间:2014-08-20 15:47:32

标签: python django

我想覆盖模型中的save方法,并从save方法内部查询模型本身。我可以在它自己的方法中访问Student模型,如下所示吗?

class Student(models.Model):
    action = models.CharField(max_length=50)    
    count  = models.IntegerField()

    def save(self, *args, **kwargs):
        count = Student.objects.filter(action=self.action).order_by('-count'))[:1]
        if count:
            #do something
        else:
            #do something else
        super(Student, self).save(*args, **kwargs)

这两种方式有什么区别?

count = Student.objects.filter(...)
count = self.__class__.objects.filter(...)

1 个答案:

答案 0 :(得分:3)

第一个问题:是的,您可以使用其中一种方法访问课程。

第二个问题:在您的示例中,它们是等效的,但如果您要将其子类化(例如,名为SubStudent),则第一个仍将引用Student其中{ {1}}会引用self.__class__