Как стать автором
Обновить

Комментарии 29

Вы на запятые посмотрите :)
сообщяет тоже жжет
Учитывая, что ни одна запятая в тексте не нужна.
Товарищ так торопился запостить первым, что на остальное уже не хватило…
У товарища с русским письменным еще со школы не очень, каюсь :)
А вообще за радостную новость спасибо, проплюсовал. Сегодня день релизов! :)
Ура товарищи :-) Неделя django на хабре началась.
В документации не отмечено изменение, важное для России: Доменная зона РФ теперь проходит валидацию урлов.
А email'ы вида 'user@localhost' проходят? Вполне валидный email при тестировании на локальной машине, но из-за ругани форм django приходится каждый раз извращаться. Мелочь, а неприятно.
Наконец-то!
А подскажите — если я на транке сейчас, то сделав апдейт я 1.3 финальный релиз получу?
Нет, вы получите транк :) Т.е. что-то вроде 1.3.00001
пока да — успевайте, пока накоммитить туда не успели)
Сделал svn up для транка — обновился только файл __init.py__, в котором изменился номер версии на final 1.3.0.
Как известно хорошим программный продукт становится не раньше чем с третьей версии, поэтому ждем скорого релиза 3.1 :)
Это откуда такое известно?
Каким-то хорошим это известно :)
Самый известный пример Windows, но далеко не единственный. В отношении джанги это конечно же шутка :)
угу. 3.11. а потом сразу 95 :)
Именно :)
Нововведения это хорошо, но мне большие интересно когда они закроют старые баги, такие как утечка дискового пространства при перезаливке файла в FileField.
Это ж не баг, а описанное в документации поведение, и сделано это сознательно. При необходимости легко перекрывается. Кстати, из лога изменений в 1.3 :)

FileField no longer deletes files
In earlier Django versions, when a model instance containing a FileField was deleted, FileField took it upon itself to also delete the file from the backend storage. This opened the door to several data-loss scenarios, including rolled-back transactions and fields on different models referencing the same file. In Django 1.3, FileField will never delete files from the backend storage. If you need cleanup of orphaned files, you'll need to handle it yourself (for instance, with a custom management command that can be run manually or scheduled to run periodically via e.g. cron).
Какая жесть (
И какое решение? Наследоваться от FileField/ImageField и в нем перекрывать поведение?
В FileField хранится не файл, а путь к файлу. Откуда этот путь берется — при загрузке формы пользователем или нет — джанге неизвестно. На один файл может ссылаться произвольное количество FileField (самый банальный пример — значение по умолчанию).

Ну, например, с ImageField — назначать мальчикам мальчиковую аватарку, если своей нет, а девочкам — девочковую можно.

Или несколько проектов на одном сервере могут через FileField ссылаться на одни и те же файлы, которые лежат в каком-то общем месте.

Поэтому поведение «удалять по умолчанию» будет в общем случае приводить к потере данных, от чего джанга защищает.

Если хотите изменить поведение глобально — укажите в DEFAULT_FILE_STORAGE свой класс (наследника FileSystemStorage), который будет заменять файлы при сохранении, а не добавлять к названию _1 _2 и т.д.

Что-то вроде этого (из головы пишу, не проверял):

# my_storages.py
from django.core.files.storage import FileSystemStorage

class ReplacingFileStorage(FileSystemStorage):
    def _save(self, name, content):
        self.delete(name)        
        return super(ReplacingFileStorage, self)._save(name, content)

# settings.py
DEFAULT_FILE_STORAGE = 'my_storages.ReplacingFileStorage'


Если не глобально — у полей есть опция storage.
Спасибо огромное за подробное объяснение.
Готовые примеры FileStorages можно посмотреть в модуле storages.
Сспасиб за новость. С утра проверял — была 1.2.5, а тут ништячек приятный под вечер.
«Скачать» is unpythonic, pip install Django -U.
Когда у нас в офисе летом на пол дня вырубили инет очень «жалел», что на винте нет дистрибутивов некоторых библиотек (про PIP_DOWNLOAD_CACHE я тогда еще не знал ^^").
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории