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