3

views.py で現在のユーザー ID を取得するにはどうすればよいですか? さらに、現在のユーザーのグループ ID を取得するにはどうすればよいですか? ユーザー ID を使用してデータベースに直接クエリを実行する必要がありますか? どうもありがとうございました。

4

4 に答える 4

5
user = auth.get_user(request)
group = request.user.groups.values_list('name', flat=True).first()

完璧に動作します。

したがって、 「name」「id」に置き換えて、グループの ID を取得できます

于 2016-10-13T20:58:52.830 に答える
0

ユースケースでユーザーごとに 1 つのグループしかない場合は、 を使用してそのグループを取得できますrequest.user.groups.get()objects.get()と多少似ていobjects.all()[0]ます。したがって、そのユーザーに複数のグループがある場合は失敗します。

https://github.com/django/django/blob/master/django/db/models/query.py

def get(self, *args, **kwargs):
    """
    Performs the query and returns a single object matching the given
    keyword arguments.
    """
    clone = self.filter(*args, **kwargs)
    if self.query.can_filter():
        clone = clone.order_by()
    clone = clone[:MAX_GET_RESULTS + 1]
    num = len(clone)
    if num == 1:
        return clone._result_cache[0]
    if not num:
        raise self.model.DoesNotExist(
            "%s matching query does not exist." %
            self.model._meta.object_name)
    raise self.model.MultipleObjectsReturned(
        "get() returned more than one %s -- it returned %s!" % (
            self.model._meta.object_name,
            num if num <= MAX_GET_RESULTS else 'more than %s' % MAX_GET_RESULTS
        )
    )

ユーザーを分類した後であれば、ユーザー モデルを拡張して外部キー フィールドを設定するだけです。その点で許可グループを使用することは、私には良いアプローチとは思えません。

于 2013-11-10T08:38:28.253 に答える