Создайте и возвратите ImageFieldFile по умолчанию из функции

Иногда, компилятор будет оптимизировать поле и использовать регистр для хранения его. Если поток 1 сделает запись к полю, и другой поток получает доступ к нему, так как обновление было сохранено в регистре (и не память), 2-й поток получит устаревшие данные.

можно думать об энергозависимом ключевом слове, что к компилятору "Я хочу, чтобы Вы сохранили это значение в памяти". Это гарантирует, что 2-й поток получает последнее значение.

5
задан thornomad 15 October 2009 в 00:46
поделиться

1 ответ

Вероятно, это была опечатка, но на самом деле вы хотите вернуть ImageFieldFile .

ImageField делает свойство модели на самом деле экземпляр aa ImageFileDescriptor . Когда вы обращаетесь к свойству, оно возвращает экземпляр ImageFieldFile .

Пока вы не вызываете методы save () или delete () файла ImageFieldFile, вы можете достаточно легко создать один экземпляр:

from django.db.models.fields.files import ImageFieldFile, FileField

class UserProfile(models.Model):
    # ...

    def get_pic(self):
        if self.pic:
            return self.pic
        return ImageFieldFile(instance=None, field=FileField(),
                              name='pictures/default.jpg')
11
ответ дан 13 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: