Данные нескольких моделей для отображения в одном шаблоне - PullRequest
0 голосов
/ 24 декабря 2018

Я использую подробный вид 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'

Пользователь должен отображаться только для этой компании

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Данные пользователя и профиля пользователя

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
0 голосов
/ 24 декабря 2018

Как вы упомянули, что вы используете таблицу аутентификации пользователя, я предполагаю, что вы используете модель пользователя Django по умолчанию.Если вы используете модель, которая подключена к пользователю с отношением OneToOne для хранения дополнительных данных, то вы должны хранить там информацию о компании.Например:

class Profile(models.Model):
   user = models.OneToOneField(User)
   company = models.ForeignKey(Company)

Если вы это сделаете, вам не нужно вносить какие-либо изменения в представление для получения пользовательских данных.Вы можете получить данные , используя связанные объекты .Как это в шаблоне CompanyDetailView:

{% for profile in object.profile_set.all %}
   {{ profile.user }}
{% endfor %}
...