洛阳铲的日志

2006年07月5日

保存/删除前后的额外动作

Filed under: django,Python — HackGou @ 22:48

在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()
Before
save
After save
>>> l.name
‘hackgou’
>>> l = Place.objects.get(name__startswith=”QQ”)
>>>l
>>> l.delete()
>>> l.name
‘test’
>>>

这好像在玩魔术。

其实这和以前版本中的_save()以及meta中定义_save()来重载Model
的save()一样,只是现在名字和Model中的一样,更加像真正的重载了!

没有评论 »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress