Как удалить кэш шаблона, изменяя переменные в Django

В моем шаблоне Django у меня есть кэшированный блок:

{% cache 300 markers_list request.user.pk request.LANGUAGE_CODE %}
    {% for marker in page_obj.object_list %}
    {{ marker }}
{% endcache %}

Я использую сигнал для аннулирования кэша:

@receiver(signal=[post_save, post_delete], sender=Marker)
def clear_cache_block(sender, **kwargs):
    key = make_template_fragment_key("markers_list", [request.user.pk, request.language_code])
    cache.delete(key)

Я не понимаю, как получить [request.user.pk, request.language_code].

Если я добавляю запрос в clear_cache_block(sender, request, **kwargs), то получаю ошибку:

clear_cache_block() missing 1 required positional argument: 'request'

request передается в качестве первого аргумента, поэтому попробуйте поместить запрос первым следующим образом:

clear_cache_block(request, sender, **kwargs)

Я не знаю, является ли это хорошим решением или есть какие-то лучшие решения, поэтому я решил эту проблему с помощью этого кода:

from django.utils.translation import get_language

@receiver(signal=[post_save, post_delete], sender=Marker)
def clear_cache_block(sender, **kwargs):
    user = kwargs["instance"].owner_id
    user_language = get_language()
    key = make_template_fragment_key("markers_list", [user, user_language])
    cache.delete(key)

Еще один:

@receiver(signal=[post_save, post_delete], sender=Marker)
def clear_cache_block(sender, instance, **kwargs):
    user = instance.owner_id
    user_language = get_language()
    key = make_template_fragment_key("markers_list", [user, user_language])
    cache.delete(key)
Вернуться на верх