Django “随更新保存”字段不影响任何行(更改类时)
让我们用decorator制作一个模型: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
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)
但这是行不通的
但是
做好这项工作。很奇怪,但很有效