Django admin - обрабатывать поле перед вставкой / обновлением базы данных - PullRequest
3 голосов
/ 15 августа 2010

У меня есть модель Django с текстовым полем. Я использую расширенный текстовый редактор (nicEdit) на сайте администратора, чтобы позволить клиенту легко вводить разметку в поле. Я хотел бы обработать содержимое поля и выполнить несколько действий, прежде чем что-либо вставить в базу данных.

Например, я хочу удалить ненужные файлы, созданные MS Word, теги шрифтов и т. Д. Я надеюсь, что эта часть должна быть простой, но я не уверен, что переопределить или перехватить, чтобы это работало.

Я также хочу обнаружить удаленно связанные изображения, загрузить локальную копию в MEDIA_ROOT и связать img src с локальным изображением. Я не совсем уверен, как идти о получении удаленного изображения; Я подумал, что django.Storage может помочь, но похоже, что он не может извлечь контент с удаленного URL.

Есть предложения?

Ответы [ 2 ]

9 голосов
/ 15 августа 2010

Чтобы манипулировать данными в вашей модели перед ее сохранением, используйте метод save (), например:

    def save(self):
      self.NameOfTextField = myCustomCleanFunction(self.NameOfTextField)
      super(YourModelName, self).save()

Ничего не будет сохранено до тех пор, пока не будет выполнено super (имя модели, self) .save ().

Если вам нужна возможность генерирования какого-либо типа ошибки вместо простой ее обработки, вам, вероятно, следует использовать метод clean () с повышение ValidationError () .

Загрузка удаленного контента является новой для меня, поэтому я не могу вам помочь. Возможно, вам придется заглянуть за Django и найти функции Python, чтобы сделать работу.

3 голосов
/ 15 августа 2010

Удаление мусора, и все это должно быть сделано с помощью пользовательского поля формы.

Загрузка изображений ... Существует несколько способов решения этой проблемы.

  • Если вы решили сохранить местоположение изображения и исходное местоположение в базе данных, то вам следует сделать это с сигналом предварительного сохранения.
  • Если вы решите хранить изображения локально, то вы можете также сделать их частью поля формы. Просто загрузите все удаленные образы и замените URL-адреса локальными.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...