Использование атрибута объекта при обращении к элементу массива в Django Template Python

По сути, в моем шаблоне Django я передаю две вещи из моего представления.

  1. объект модели 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 %}

Вернуться на верх