0
我想重写一些模型行为,但我不确定应该在哪里做。Django:重写create()方法和save方法()之间有什么区别?
如果我理解这个权利,create()
方法只是save()
方法的包装。我见过的压倒一切的行为的例子......
- in the create() method,
- in the save() method调用真正的save()方法,
- and in the save() method调用真正的save()方法前后。
有什么区别?
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
@classmethod
def create(cls, name):
blog = cls(name=name)
# do something <-- 1!
return blog
def save(self, *args, **kwargs):
# do_something <-- 2!
super(Blog, self).save(*args, **kwargs) # Call the "real" save() method.
# do_something_else <-- 3!
'save'方法在模型上,但'create'方法是为您创建对象的默认管理器,它执行一些验证,然后调用save方法。 – karthikr