0

オブジェクトのリストを取得すると、ログインしているユーザーに属するオブジェクトのみが必要になります。

これは、デフォルトのマネージャーをオーバーライドすることでモデルマネージャーで実行できるのではないかと考えていますが、ログインして使用する方法がわかりません。これは私がこれまでに持っているものです...

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

私は正しい方向に進んでいますか?どうすれば目標を達成できますか?それとも、これを行うためのより良い方法はありますか?

ありがとう。

4

1 に答える 1

5

requestモデルまたはモデル マネージャーの (したがって、現在ログインしているユーザー) へのアクセス権がありません。したがって、ユーザー インスタンスを受け取り、そのユーザーに属するオブジェクトのみを返すジェネリック マネージャー メソッドを作成できます。

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

そしてあなたのモデルでは:

class Group(models.Model):
    objects = GroupsManager()

そしてビューで:

def my_view(request):
    groups = Group.objects.for_user(request.user)
于 2013-03-13T20:59:04.873 に答える