Фильтрация последнего созданного запроса и итерация по многим отношениям в проекте Django
У меня следующая модель:
class Log(models.Model):
log_order = models.IntegerField(validators=[MinValueValidator(1)],blank=True, null=True)
class ActiveSession(models.Model):
log = models.ManyToManyField(Log, related_name='savedlogs')
В моем представлении я пытаюсь получить самое последнее создание ActiveSession
, которое имеет отношения "многие ко многим" с моделью Log
для итерации между ними.
Вот как я создал представления:
def get_context_data(self, **kwargs):
active_session =ActiveSession.objects.get(id=ActiveSession.objects.last().id)
context = super().get_context_data(**kwargs)
return context
Я думаю, что моя проблема связана с get
Я пытался использовать filter(id=id).latest, но это не сработало.
вот шаблон:
{% for x in active_session %}
{{ x.log_order }}
{% endfor %}
В настоящее время я получаю TypeError: 'ActiveSession' object is not iterable
мой вопрос:
Как исправить эту ошибку и как я могу использовать цикл for в шаблоне для отображения деталей каждого Log
, который находится внутри каждого ActiveSession
.
В этом примере есть 3 журнала внутри активной сессии, и я хочу показать порядок журналов каждого
Вы должны передать в шаблон единственный объект ActiveSession
, а затем перебрать экземпляры журнала, связанные с сессией.
class FooView(generic.View):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["active_session"] = ActiveSession.objects.last()
return context
# template.html
{% for log in active_session.log.all %}
{{ log }}
{% endfor %}