Как добавить дополнительные поля для каждого фида в Django Feed (в частности, в Django-iCal feed)

Я генерирую ленту календаря для каждого пользователя. Как часть URL, я разрешаю фильтры событий. Я пытаюсь понять, как сохранить этот фильтр (или любую произвольную переменную) в конкретном фиде, который я генерирую из конкретного вызова. Метод, который, как я думал, будет работать, заключается в том, чтобы (исходя из мира C++) сделать статическую переменную, которая будет общей для всех вызывающих Feed, что приведет к несогласованности, когда Feed генерируются одновременно.

Как правильно это сделать? Читая библиотеки Feed, я вижу такие методы, как feed_extra_kwargs() и item_extra_kwargs(), но я не могу найти примеры или документацию по ним, показывающие, как их использовать.

Мой URL:

re_path(r'^ics/(?P<user_id>\d+)/(?P<params>[\w=;]+)/ical.ics$', EventFeed(), name='ics'),

Моя попытка подачи:

class EventFeed(ICalFeed):

"""
A simple event calender
"""
product_id = '-//icevite.com//Schedule//EN'
timezone = 'UTC'
file_name = "icevite.ics"

filter = []
alarms = []

def get_object(self, request, user_id, params, *args, **kwargs):
    self.filter = []
    try:
        split = params.split(";")
        for s in split:
            item = s.split("=")
            match item[0]:
                case "f":
                    self.filter = list(item[1])
                case "n":
                    mins = int(item[1])
                    if mins:
                        self.alarms.append(mins)
        return Player.objects.get(id=user_id)
    except:
        return None

def items(self, player):
    responses = Response.objects.filter(mate__player=player)
    if self.filter:
        filtered = responses.exclude(response__in=self.filter)
    else:
        filtered = responses
    return filtered.select_related('game', 'game__team').order_by('game__time')

 ...
def item_valarm(self, item):
    alarm_list = list()
    for alarm in self.alarms:
        valarm = Alarm()
        valarm.add('action', 'display')
        valarm.add('description', self.item_title(item))
        valarm.add('trigger', timedelta(minutes=alarm))
        alarm_list.append(valarm)
    return alarm_list 

По сути, я пытаюсь каким-то образом получить значения "filter" и "alarms", передаваемые методам items() и item_*(), и не могу понять, как получить разные, независимые значения для каждого доступа к URL. Интуиция подсказывает, что дело в методах *_extra_kwargs(), но как их задать и как получить к ним доступ?

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