簡體   English   中英

如何正確更新 django model?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM