Django get_context_data, динамический контент

Я вытащил список пользователей, а затем для каждого пользователя вытащил определенную статистику в подробном представлении. Я надеялся, что смогу просто перебрать данные в представлении get_context, но я очень ошибался, а затем я сделал еще одну ошибку в шаблоне, и это сработало! Ура:/

я думаю get_context_data Лучше всего подходит для этого, но я пытаюсь понять, как сделать это более эффективным способом. Мой код ниже дает мне то, что я хочу, но это не красиво.

usermodel_detail.html

{% for i in range %}
    <h3>Trainees {{trainees|index:forloop.counter0}}</h3>

    {% if foods|index:forloop.counter0 %}
        {% for food in foods|index:forloop.counter0 %}
            .
            .
            .
        {% endfor  %}
    {% endif %}
{% endfor %}

views.py

class UserModelDetailView(LoginRequiredMixin, DetailView):
    model = UserModel

    def get_context_data(self, **kwargs):
        context = super(UserModelDetailView, self).get_context_data(**kwargs)
        context['trainees'] = UserModel.objects.filter(trainer_email=self.request.user)
        foods = dict()
        for index,trainee in enumerate(context['trainees']):
            foods[index] = Food.objects.filter(user_id=trainee.pk)
        context['foods'] = foods
        context['range'] = str(len(context['trainees']) + 10) # had to add 10 to get the range to be 2 strings long, works for now but it's not a good way
        return context

    def get_queryset(self):
        userpk = self.request.user.pk
        queryset = UserModel.objects.filter(pk=userpk)
        return queryset

Есть ли более простой способ сделать это или лучше?

0 ответов

Другие вопросы по тегам