django的Manager.create()方法是做什么的?

fkaflof6  于 2022-11-26  发布在  Go
关注(0)|答案(1)|浏览(172)

我在rest_framework中四处探索,试图弄清楚它是如何工作的,并遇到了一个对Model.objects.create()的调用,但我在docs或source code中找不到django模型管理器的create()方法。它看起来是动态生成的。它到底是做什么的?我在哪里可以找到它的代码?如果我想覆盖它,我的实现必须做什么?我找到了this question,但它只说调用super().create()方法。

4c8rllxm

4c8rllxm1#

Django的管理器会在QuerySet上寻找相同的方法,以防Manager中不存在该方法,因此它会在底层QuerySet上调用**.create()**方法[Django-doc],该方法的实现方式为[GitHub]:

def create(self, **kwargs):
    """
    Create a new object with the given kwargs, saving it to the database
    and returning the created object.
    """
    obj = self.model(**kwargs)
    self._for_write = True
    obj.save(force_insert=True, using=self.db)
    return obj

因此,它将使用传递的关键字创建一个模型对象,并使用force_insert=True保存它以稍微提高效率,并返回在数据库中创建的项。

相关问题