Django “随更新保存”字段不影响任何行(更改类时)

Django “随更新保存”字段不影响任何行(更改类时),django,inheritance,Django,Inheritance,让我们用decorator制作一个模型: def upgradable(model): @classmethod def upgrade(cls, base, **kwargs): base.__class__ = cls for attr, value in kwargs.items(): setattr(base, attr, value) return base setattr(model, "upgrade", upgrade) ret

让我们用decorator制作一个模型:

def upgradable(model):
  @classmethod
  def upgrade(cls, base, **kwargs):
    base.__class__ = cls
    for attr, value in kwargs.items():
      setattr(base, attr, value)
    return base
  setattr(model, "upgrade", upgrade)
  return model

class Person(models.Model):
  name = models.CharField(max_length=50)
  def save(self, *args, **kwargs):
    self.name = self.name.upper()
    super(Person, self).save(*args, **kwargs)
和继承的模型:

@upgradable
class User(Person):
  email = models.EmailField();
我正在尝试升级

person = Person.objects.get(...)
user = User.upgrade(person, email="example@example.com")
user.save()
但是错误出现了:

Save with update_fields did not affect any rows.
连接到超级(个人,自我)。保存(*args,**kwargs)(在模型人的保存方法中)

这并不是完全错误的,因为实际上我不想更改表person中的任何内容,我只想向表user添加一些内容(指向person和email的指针)


那么如何跳过这个警告呢?

答案并不明显-我试图添加

user.save(force_update = True)
但这是行不通的

但是


做好这项工作。奇怪,但有效。

答案并不明显——我试图补充

user.save(force_update = True)
但这是行不通的

但是

做好这项工作。很奇怪,但很有效