在Django中,常常会出现这样的情况: 在保存一个对象到数据库中或者从数据库把该对象删除的时候,希望可以执行另外一些附加的操作,
比如:
class Place(models.Model): name = models.CharField(maxlength=50) address = models.CharField(maxlength=80) def save (self): self.name = 'hackgou' print "Before save" super(Place, self).save() #call the 'real' save() method print "After save" def delete (self): self.name = "test" super(Place,self).save() #这是在删除么 :P def __str__(self): return "%s the place" % self.name>>from djangoTest.oneToOne.models import *>>>l = Place(None,"Gavin","sichuang")>>>l>>>l.save()BeforesaveAfter save>>> l.name'hackgou'>>> l = Place.objects.get(name__startswith="QQ")>>>l>>> l.delete()>>> l.name'test'>>>
这好像在玩魔术。
其实这和以前版本中的_save()以及meta中定义_save()来重载Model
的save()一样,只是现在名字和Model中的一样,更加像真正的重载了!
|