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 не кэшируется вместе с остальным сгенерированным представлением на основе класса?
Фу. Я украшал не тот вид.
Неважно. Здесь нечего смотреть.