我有两个由外键链接的模型:
class Car(models.Model):
...
class Seat(models.Model):
page = models.ForeignKey(Car)
position = models.IntegerField()
...
现在我可以访问这样的汽车座椅:
car = Car.objects.get(pk=123)
car_seats = car.seat_set.all()
我想覆盖all()
方法,以便默认返回按位置排序的席位集。我知道如何覆盖Car
模型中的seat_set,但是如何覆盖其中一个方法?
答案 0 :(得分:2)
至少有两种方法可以解决这个问题:
Documentation on custom manager
class Seat(models.Model):
page = models.ForeignKey(Car)
position = models.IntegerField()
class Meta:
ordering = ('position', )
请注意,默认情况下,这会在Seat
queryset上设置排序。
答案 1 :(得分:1)
我不会与经理混淆.. 定义属性:
@property
def ordered_seats(self):
return self.seat_set.all().order_by('position')