gpt4 book ai didi

django - 如何排除 Django models.Model.save() 中的字段

转载 作者:行者123 更新时间:2023-12-03 10:00:12 24 4
gpt4 key购买 nike

我有以下 model ,保存后计算 hash_id字段基于 pk :

class MyTable(models.Model):
something = models.CharField(max_length=255)
reported = models.IntegerField(default=0, blank=True)
hash_id = models.CharField(max_length=32, db_index=True, unique=True, blank=True)

def save(self, *a, **kw):
super().save(*a, **kw)
self.hash_id = hash_fn(self.pk)
super().save(*a, **kw)

在我的其中之一 views我有以下几行,它们应该增加 reported字段为 1,但是 reported由于覆盖了 save,所以增加了 2方法:
my_table_ins.reported = F('reported') + 1
my_table_ins.save()

理想情况下,我想要以下内容:
    def save(self, *a, **kw):
super().save(*a, exclude=['reported'], **kw)
self.hash_id = hash_fn(self.pk)
super().save(*a, **kw)

最佳答案

根据官方文档,您可以使用 指定要保存的字段。更新字段范围:

my_table_ins.reported = F('reported') + 1
my_table_ins.save(update_fields=['reported', ]) # This will only save 'reported'

该文档可在此处获得:

https://docs.djangoproject.com/en/1.11/ref/models/instances/#specifying-which-fields-to-save

关于django - 如何排除 Django models.Model.save() 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com