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