【问题标题】:Get User id from class based view从基于类的视图中获取用户 ID
【发布时间】:2021-06-27 19:03:46
【问题描述】:

我有一个基于类的视图:

class PostListViewMojeReported(ListView):

    def get_username(self, **kwargs):
        login_username = request.user.username
        context = {'login_username': login_username}
        return context

    model = Post
    template_name = 'blog/filter_moje_reported.html'
    context_object_name = 'posts'
    queryset = Post.objects.filter(Q(status='Otvorena') & (Q(res_person_1_username=username) | Q(res_person_2_username=username)))
    ordering = ['-date_posted']
    paginate_by = 30

我不知道如何从当前登录的用户那里获取用户名,以用作我的查询集中的过滤器。我需要将当前登录的用户与“res_person_1_username”和“res_person_2_username”进行比较。

【问题讨论】:

    标签: python django class view


    【解决方案1】:

    你可以通过self.request获取请求对象,所以:

    class PostListViewMojeReported(ListView):
        model = Post
        template_name = 'blog/filter_moje_reported.html'
        context_object_name = 'posts'
        paginate_by = 30
    
        def get_username(self, **kwargs):
            login_username = self.request.user.username
            context = {'login_username': login_username}
            return context
    
        def get_queryset(self, *args, **kwargs):
            username = self.request.user.username
            return super().get_queryset(*args, **kwargs).filter(
               Q(res_person_1_username=username) | Q(res_person_2_username=username),
               status='Otvorena'
            ).order_by('-date_posted')

    不过,我建议使用两个 ForeignKeys 到用户模型,并且存储用户名,因为以后用户可能会删除他们的帐户,然后另一个人创建具有该用户名的帐户。

    【讨论】:

    • 感谢您的解决方案,它完美无缺。并寻求建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2013-04-14
    • 2020-11-04
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多