Не удалось разобрать остаток: '(audio_only=True)'.

в моей templates/videos.html,

<div class="grid grid-cols-3 gap-2">
    {% for vid in videos.streams.filter(audio_only=True) %}
        <a href="{{vid.url}}">{{vid.resolution}}</a>
    {% endfor %}
</div>

Ошибка есть,

Could not parse the remainder: '(audio_only=True)' from 'videos.streams.filter(audio_only=True)'

Я могу решить эту проблему, если передам all_videos = videos.streams.filter(audio_only=True) из моего views.py как контекст, а в templates/videos.html заменю videos.streams.filter(audio_only=True) на all_videos,

но я хочу знать, есть ли какой-либо другой метод решения этой проблемы

но я хочу знать, есть ли другой метод решения этой проблемы.

Вы можете добавить дополнительное свойство/метод без параметров в модель Video и вызывать это свойство для получения отфильтрованного набора запросов.

Например:

class Video(models.Model):
    # …
    
    @property
    def audio_streams(self):
        return self.streams.filter(audio_only=True)

и затем, таким образом, использовать {% for video in videos.audio_streams %}. Но независимо от этого, язык шаблонов Django был намеренно ограничен, чтобы не позволить людям писать такое: шаблон должен реализовывать логику rendering, а не business: бизнес-логика принадлежит моделям и представлениям. Поэтому единственное чистое решение - фильтровать в view, а не в шаблоне.

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