Django:从保存方法查询模型

2 投票
1 回答
1131 浏览
提问于 2025-04-18 17:56

我想在一个模型里重写保存方法,然后在这个保存方法里面查询这个模型本身。我能在这个模型自己的方法里像下面这样访问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 个回答

4

第一个问题: 是的,你可以在一个类的方法里访问这个类。

第二个问题: 在你的例子中,它们是等价的,但如果你创建一个子类(比如叫做 SubStudent),那么第一个还是指向 Student,而 self.__class__ 会指向 SubStudent

撰写回答