Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django文档中的超级方法_Python_Django - Fatal编程技术网

Python 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

以下是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, **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()


这同样适用于保存后操作

你的问题真的不清楚。作者正在演示如何在保存之前和之后执行操作。你说什么是假的?你为什么要重新排序?你到底在问什么?