我正在使用Django详细信息视图显示单个公司的详细信息。但是现在我想在该公司员工的用户的相同模板列表上显示。但是我正在使用用户身份验证表。如何显示多个视图,例如公司的详细信息视图和该公司的用户的列表视图。
class CompanyDetailView(LoginRequiredMixin, generic.DetailView):
model = Company
template_name = 'company/company-detail.html'
context_object_name = 'companies'
class UserListView(LoginRequiredMixin, generic.ListView):
model = User
template_name = 'users/users.html'
context_object_name = 'users'
只应显示该公司的用户
答案 0 :(得分:1)
正如您提到的那样,您正在使用“用户验证表”,我假设您正在使用默认的Django用户模型。如果使用的模型通过OneToOne关系连接到User以存储其他数据,则必须在其中存储公司信息。喜欢:
class Profile(models.Model):
user = models.OneToOneField(User)
company = models.ForeignKey(Company)
如果这样做,则无需在视图中进行任何更改即可获取用户数据。您可以获取数据using related objects。在CompanyDetailView
的模板中是这样的:
{% for profile in object.profile_set.all %}
{{ profile.user }}
{% endfor %}
答案 1 :(得分:1)
用户和UserProfile数据
class CompanyUserDetailView(LoginRequiredMixin, generic.TemplateView):
template_name = 'company/company-detail.html'
def get_context_data(self, **kwargs):
id_ = self.kwargs.get("pk")
# print('printinh,,: ',id_)
context = super(CompanyUserDetailView, self).get_context_data(**kwargs)
context['companydetail'] = Company.objects.get(pk=1)
context['userlist'] = User.objects.filter(userprofile__user_company_id=id_)
return context