Использование атрибута объекта при обращении к элементу массива в Django Template Python
По сути, в моем шаблоне Django я передаю две вещи из моего представления.
- объект модели Django План, который определяется следующим образом:
class Plan(models.Model):
class Sport(models.IntegerChoices):
RUN = 1, "RUNNING"
CYC = 2, "CYCLING"
SWM = 3, "SWIMMING"
sport = models.PositiveSmallIntegerField(
choices=Sport.choices,
default=Sport.RUN
)
start_date = models.DateField("Starting Date")
end_date = models.DateField("End Date")
weeks = models.PositiveSmallIntegerField(default=0)
title = models.CharField(max_length=20)
description = models.TextField(max_length=100, blank=True, null=True)
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
и
2. массив массивов активностей strava, полученных из API, activity_list
который отформатирован так, что activity_list[i][j]
вернет активность недели i в день j.
В моем шаблоне мне нужно динамически обращаться к activity_list
во время перебора номеров недель в плане. Моей первой попыткой было сделать что-то вроде ativity_list.week.number.0
для доступа к понедельнику той недели, на которой мы находимся, но, как и ожидалось, Django воспринимает week.number
как литерал, а не заменяет его на число "0" или "3" или что-либо еще.
Я действительно застрял на этом, так что любая помощь была бы очень признательна, либо в виде специального исправления, либо в виде способа рефакторинга моих моделей, чтобы сделать это осуществимым.
Спасибо
На самом деле это тот же вопрос, что и этот: Получить элемент списка динамически в шаблонах django
В основном используйте фильтр типа
@register.filter
def lookup(d, key):
return d[key]
и затем используйте {% with lookup_result=mylist|lookup:x %}{{lookup_result.first_name}}{% endwith %}