Что делает метод django Manager.create()?
Я копался в rest_framework
, пытаясь понять, как это работает, и наткнулся на вызов Model.objects.create()
, но я не могу найти метод create()
для менеджеров моделей django ни в документации, ни в исходном коде . Похоже, что он генерируется динамически. Что именно он делает? Где я могу найти его код? Если я захочу переопределить его, что должна будет делать моя реализация? Я нашел этот вопрос, но там говорится только о вызове метода super().create()
.
Django's manager will look for the same method on a QuerySet
in case that method does not exists in the Manager
. So it will call the .create()
method [Django-doc] on the underlying QuerySet
, which is implemented as [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
, чтобы немного повысить эффективность, и вернет созданный объект в базу данных.