2017-05-07 11 views
0

私は以下のモデルを持っています。私はadmin.pyで 'save_as'を使用して、フォーム。'save_model'メソッド+ 'save_as = True' // "古い"オブジェクトを変更する方法

私は 'save_as'を使用する場合、「古い」オブジェクトはブール値フィールド「真」に設定する必要があります。

私はModelAdminメソッド 'save_model'をadmin.pyに実装しようとしましたが、これは "new"オブジェクトの値を変更するだけです。

「古い」オブジェクトも変更できますか?

models.py

class Person(models.Model): 
    name = models.CharField(max_length=64) 
    hide = models.BooleanField(default=0) 

admin.py

class personAdmin(admin.ModelAdmin): 
    save_as = True 

    def save_model(self, request, obj, form, change): 
     obj.hide = True 
     super(personAdmin, self).save_model(request, obj, form, change) 

答えて

1

これを試してみてください:

def save_model(self, request, obj, form, change): 
    # Get old object's id from the url 
    old_obj_id = resolve(request.path).args[0] 
    # Now that we know the id, we can easily fetch it from database 
    old_obj = Person.objects.get(id=old_obj_id) 
    # Update it's hide field   
    old_obj.hide = True 
    # Don't forget to save it! 
    old_obj.save() 

    # Now we can save the new object as a new one (save_as) 
    super(personAdmin, self).save_model(request, obj, form, change) 
関連する問題