Генерация файлов после добавления экземпляра модели через интерфейс администратора django - PullRequest
0 голосов
/ 27 января 2019

Я пишу модель для веб-сайта.Когда пользователь добавляет экземпляр модели через администратора Django, я хочу перехватить событие и автоматически сгенерировать файлы, включая добавление поля пути ссылки для этих созданных файлов.

Форма модели (используется для администратораsite) имеет метод clean, который можно переопределить.С помощью этого я могу создавать и обновлять файлы и поля.

def clean(self):
    info = self.cleaned_data.get('info')

    ... #Generate IO paths from info

    self.cleaned_data['template_path'] = template_path
    self.instance.template_path = template_path

    return self.cleaned_data

Мне нужно создать различие между событиями add и change, поэтому я не пишу файлы и не изменяю путь создания объекта поста,Есть ли способ сделать это в clean, или я должен искать в другом месте для создания полей и обновления полей?

1 Ответ

0 голосов
/ 27 января 2019

Очистка ModelForm не обязательно означает, что экземпляр Model будет сохранен.

Вы можете сделать это в методе сохранения модели () или в сигнале pre_save , чтобы убедиться в этом.

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

if instance.pk and instance.__class__.objects.filter(pk=instance.pk):
    # Editing existing instance, skip
    pass
else:
    # New instance. do whatever you want

В вашем случае экземпляр становится self.instance

...