[英]How can I update correctly a django model?
我在 Django 中有这个 model:
dms_dok_titel = models.CharField(max_length=255, blank=True)
dms_dok_beschreibung = models.CharField(max_length=3000, blank=True, null=True)
dms_dok_datei = models.FileField(max_length=255,upload_to='DMS/')
dms_dok_hochgeladen_am = models.DateField()
dms_dok_indiziert = models.BooleanField(default=False)
dms_dok_gehoert_zu_app = models.CharField(max_length=255, choices=app_choices, blank=False, null=False)
dms_dok_typ = models.CharField(max_length=255, choices=typ_choices, blank=False, null=False, default='Sonstiges')
def save(self, *args, **kwargs):
preserve_ext = extension(self.dms_dok_datei.name)
neuer_dateiname = self.dms_dok_gehoert_zu_app + '_' + self.dms_dok_titel + '_' + self.dms_dok_hochgeladen_am.strftime("%d.%m.%Y")
self.dms_dok_datei.name = neuer_dateiname + preserve_ext
super(DMS_Dokument, self).save(*args, **kwargs)
def delete(self):
self.indexes.all().delete()
super(DMS_Dokument, self).delete()
class Meta:
app_label = 'DMS'
在我的代码的另一个地方,我对来自这个 class 的对象做了一些事情,我只想更新一个字段(dms_dok_indiziert)。
所以我想我可以将这个对象的值 (tmp_obj) 设置为 true,然后执行 tmp_obj.save()。 但无论出于何种原因,它总是会弄乱我在数据库中的文件名。 通常的上传脚本会生成类似“DMS/nameofthefile.pdf”的内容,但在保存 tmp_obj 后它会变成“nameofthefile.pdf”。
我试过这个:
tmp_obj.dms_dok_datei.name = 'foo'
#tmp_obj.dms_dok_datei.name = 'DMS/' + tmp_obj.dms_dok_datei.name
print(tmp_obj.dms_dok_datei.name)
tmp_obj.save()
是的,它打印'foo'。 尽管如此,当我保存 object 时,在数据库中它又是“nameofthefile.pdf”。
我只是不明白。 :(
我在这里看到了回复,请检查一下。 这可能会有所帮助:
tmp_obj.dms_dok_datei.name = "name_you_want"
tmp_obj.dms_dok_datei.field.upload_to = 'DMS/'
tmp_obj.save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.