如何筛选(或全部)联接表';由django中当前登录的用户创建的行?

如何筛选(或全部)联接表';由django中当前登录的用户创建的行?,django,Django,我的创作是一个关于票务、用户和资产的基础项目。这是一个典型的应用程序,公司必须保留一个列表,列出谁拥有什么以及发生了什么问题 到目前为止,我有(型号): 我已经把它们精简了一点,以排除无用的信息。还有其他类似资产位置、类别等,它们都以相同的模式存在——所有者最终作为外键添加 我创建了某种形式的身份验证,因此每个登录的用户都有自己的票据、资产和用户(实际上是员工)。需要进行过滤,以便在每次成功验证后仅显示每个用户的数据 我正在使用CBV并覆盖get_queryset以启用当前登录用户的筛选: Vi

我的创作是一个关于票务、用户和资产的基础项目。这是一个典型的应用程序,公司必须保留一个列表,列出谁拥有什么以及发生了什么问题

到目前为止,我有(型号):

我已经把它们精简了一点,以排除无用的信息。还有其他类似资产位置、类别等,它们都以相同的模式存在——所有者最终作为外键添加

我创建了某种形式的身份验证,因此每个登录的用户都有自己的票据、资产和用户(实际上是员工)。需要进行过滤,以便在每次成功验证后仅显示每个用户的数据

我正在使用CBV并覆盖get_queryset以启用当前登录用户的筛选:

Views.py

class TicketList(ListView):
    template_name = 'assets/ticket_list.html' 
    def get_queryset(self):
        user = self.request.user
        return Ticket.objects.filter(owner_id=user.id).select_related('user','asset','category') 
    def get_context_data(self, **kwargs):
        context = super(TicketList, self).get_context_data(**kwargs)
        context['totalTickets'] = self.get_queryset().count()
        context['tickets'] = self.get_queryset().select_related('user','asset','category')
        return context
一切工作都成功,只显示登录用户的数据。然后,我尝试创建一个新票证:

class TicketCreate(CreateView):
    fields = [ 'category', 'issue', 'user']
    template_name = 'assets/ticket_form.html'
    def get_queryset(self):
        user = self.request.user
        return Ticket.objects.filter(owner_id=user.id)
    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.owner_id = self.request.user.id
        self.object.save()
        return HttpResponseRedirect(self.get_success_url())
    success_url = reverse_lazy('ticket_list')
我通过使用
{{form.category}
{{form.issue}}
等将所有内容发布到表单模板中。我面临的问题是表单中显示的下拉框,例如{form.user}应该只显示user.owner=self.request.user.id的用户,简单地说:所有者创建的用户。而是显示数据库中的所有用户


问题是否显而易见:)?

我不确定您是如何将有关用户的数据发送到模板的。创建模型管理器会更容易,但我认为您无法访问那里的请求。@ruddra您是什么意思?你想让我展示什么?
class TicketCreate(CreateView):
    fields = [ 'category', 'issue', 'user']
    template_name = 'assets/ticket_form.html'
    def get_queryset(self):
        user = self.request.user
        return Ticket.objects.filter(owner_id=user.id)
    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.owner_id = self.request.user.id
        self.object.save()
        return HttpResponseRedirect(self.get_success_url())
    success_url = reverse_lazy('ticket_list')