Python Django文档中的超级方法
以下是Django文档中的一部分:Python Django文档中的超级方法,python,django,Python,Django,以下是Django文档中的一部分: from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def save(self, *args, **kwargs): do_something() super(Blog, self).save(*args
from django.db import models
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def save(self, *args, **kwargs):
do_something()
super(Blog, self).save(*args, **kwargs) # Call the "real" save() method.
do_something_else()
我犹豫不决的是专注于保存方法。
为什么作者将“做某事”与“做某事”分开?
由于存在“调用“真正的”save()方法”,do_something()的含义是什么,它似乎是“false”?我甚至可以进行操作:
def save(self, *args, **kwargs):
super(Blog, self).save(*args, **kwargs) # Call the "real" save() method.
do_something()
do_something_else()
我说得对吗?做某事()
和做其他事情()
不是真正的函数。它们没有定义。它们只是提示您在那里做一些事情,然后,如果您需要,再做一些其他的事情,实现甚至是函数并在那里调用它们(如果您需要)
通常,当保存另一个字段时,您需要一些字段来自动更新/获取值。一种方法是重写modelsave方法。通常在调用super().save()之前先执行此操作。是的,您是对的
没有深刻的含义。
这些句子的意思是“你可以在super().save之前或之后编写一些你想做的方法。save()。”
但是,我有点怀疑您是否详细了解super(),这是python中的语法之一。好吧,这只是表明您可以在使用super调用父方法或同级方法之前或之后使用函数(或编写代码) 但首先,你必须知道 在您的示例中,您使用super调用
save
,这将触发基于django的方法和函数,并执行ModelBase.save()中的许多其他操作
您这样做是为了遵循standart django保存过程
但是,您可能需要进行一些检查或进行一些预保存工作,因此可以调用一个方法来完成保存模型实例之前应该完成的工作。也许您想将记录时间记录到一个文件中,只需编写一个方法并调用它来记录时间戳,然后再调用super().save()
这同样适用于保存后操作 你的问题真的不清楚。作者正在演示如何在保存之前和之后执行操作。你说什么是假的?你为什么要重新排序?你到底在问什么?