【问题标题】:Override save for model覆盖模型的保存
【发布时间】:2018-07-26 12:00:34
【问题描述】:
class Employee(models.Model):
    id = models.AutoField(primary_key=True)
    number_in_order = models.IntegerField(default=1)
    image = models.ImageField(upload_to='employees_photo/')
    name = models.CharField(max_length = 30, default='')
    position = models.CharField(max_length=60, default='')
    description = models.TextField(blank=True, default='')

    def __str__(self):
        return "%s" % (self.name)

    def save(self, *args, **kwargs):
        self.number_in_order = self.id
        super(Employee, self).save(*args, **kwargs)

为什么 number_in_order 字段不适合 id 字段的值

【问题讨论】:

  • 如果它是一个新对象,它不会有一个 id。先保存获取id,然后编辑number_in_order,再保存。或者在第一次 save() 之后做一个 queryset.update

标签: python django django-models overriding models


【解决方案1】:

在调用 save 的 super 之前,您正在分配 self.number_in_order。因此,在分配时,您在 self.id 中没有价值。 id 的值由数据库决定。

【讨论】:

    猜你喜欢
    • 2018-10-07
    • 2011-05-15
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多