通过Django管理界面添加模型实例后生成文件

时间:2019-01-27 06:23:06

标签: django python-3.x django-models django-admin

我正在为网站编写模型。当用户通过Django管理员添加模型的实例时,我想捕获事件并自动生成文件,包括为这些已创建文件添加参考路径字段。

模型表单(用于管理站点)具有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

我需要在addchange事件之间进行区分,所以我不会写文件,也不会更改路径后对象的创建。是否可以在clean中进行此操作,还是应该在其他地方创建字段并更新字段?

1 个答案:

答案 0 :(得分:1)

清理ModelForm并不一定意味着可以保存Model实例。

您可以在Model的save()方法或pre_save信号中进行确认。

话虽如此,为了区分添加和更改,您可以先在数据库中查询具有相同ID的实例,然后再保存。

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