Django Cache - использование в представлении, основанном на классах, с предварительно назначенным S3 url

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

@method_decorator(cache_page(30), name='dispatch')
class MyListView(ListView):
    model = MyModel

MyModel - это довольно простая модель с несколькими полями varchar, а также связь по внешнему ключу с моделью изображений.

class MyModel(index.Indexed, models.Model):
    sku = models.CharField(max_length=10, unique=True)
    ... more fields

class MyImageModel(models.Model):
    def get_sku(instance, filename):
        return f"{instance.parent.sku}/{filename}"

    parent = models.ForeignKey(MyModel, related_name='images', on_delete=models.CASCADE)
    image = models.ImageField(upload_to=get_sku)

Я использую django-s3-storage для бэкенда хранилища. Это сделает вызов get_presigned_url (который использует boto3), когда я запрошу url изображения в шаблоне:

{% for model in object_list %}
    <p>{{model.sku}}</p>
    <img src="{{model.images.0.image.url}}">
{% endfor %}

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

Почему этот назначенный url не кэшируется вместе с остальным сгенерированным представлением на основе класса?

Фу. Я украшал не тот вид.

Неважно. Здесь нечего смотреть.

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