3

マネージャの関連エントリをフィルタリングしたいのですが、次のようになります。

class UserTravelsCarsManager(models.Manager):
    def for_user(self, user):
        return super(UserTravelsCarsManager, self).get_query_set().filter(user=user)

class TravelsCars(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=255)
    ...
    objects = UserTravelsCarsManager()

class UserTravelsManager(models.Manager):
    def for_user(self, user):
        return super(UserTravelsManager, self).get_query_set().filter(user=user)

class Travels(models.Model, ClonableMixin):
    user = models.ForeignKey(User)
    vehicle = models.ForeignKey(TravelsCars)
    ...

    objects = UserTravelsManager()

それだけでは機能しません。私はすべてのユーザーのためにすべての車を手に入れます。私はもう試した:

return super(UserTravelsManager, self).get_query_set().filter(user=user, vehicle__user=user)

これも機能しません。

更新:明確にするために、のエントリTravelsはフィルタリングされます。を介してクエリを実行しても、関連するTravelsCarsものだけはフィルタリングされませんTravels

私は何が間違っているのですか?

4

1 に答える 1

2

super(UserTravelsCarsManager, self).get_query_set().filter...使用しようとする代わりにself.filter(user=user)。同じでUserTravelsManager

于 2012-07-09T08:19:24.450 に答える