Как получить значения словаря в шаблоне Django без цикла for
Я пытаюсь получить значение словаря в шаблоне Django. Я не уверен, возможно ли это или нет.
Вот следующий шаблон:
{{ active_session.log.values }}
Вот его распечатка:
<QuerySet [{'id': 318, 'log_order': 1, ......other repeated keys and values}>
Мой вопрос, как можно получить все значения log_order, проходя через цикл for в шаблоне, зная, что это отношение многие ко многим.
Вот модели:
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')
..................................
вот виды:
class workout_details(DetailView):
model = Workout
template_name = 'my_gym/start_workout.html'
context_object_name = 'workout'
def get_context_data(self, **kwargs):
exercises = Exercise.objects.filter(workout_id=self.object)
p = Log.objects
active_session = ActiveSession.objects.get(id=ActiveSession.objects.last().id)
context = super().get_context_data(**kwargs)
context['exercises'] = exercises
context['form'] = LogForm()
context['p'] = p
context['active_session'] = active_session
return context
В нескольких ответах говорится, что можно создать функцию поиска, но у меня выдает ошибку Failed lookup for key [log_order] in <django.db.models.fields.related_descriptors.create_forward_many_to_many_manager.<locals>.ManyRelatedManager object at 0x046FE4A8>
Вот функция в моделях:
@register.filter(name='lookup')
def lookup(value, arg):
value_dict = ast.literal_eval(value)
return value_dict.get(arg)
Вот шаблон:
{{ mydict|lookup:active_session.log.log_order }}