保存

2016-10-25 5 views
0

を任意の行に影響を与えなかったのは、デコレータでモデルを持ってみましょう:保存

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="[email protected]") 
user.save() 

エラーが表示されます。

への接続で

(モデル人物の保存方法で)

確かに私はテーブルの人には何も変更したくないので、それは総間違っていないですが、私はちょうどテーブルのユーザーに何かを追加したいです(人と電子メールへのポインタ)。

この警告をスキップするにはどうすればよいですか?

答えて

0

答えは明らかではなかった - 私は

user.save(force_update = True) 

を追加しようとしましたが、それは動作していません。

しかし

user.save(force_insert = True) 

は、仕事をします。奇妙な、しかし動作します。