Что делает метод 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, чтобы немного повысить эффективность, и вернет созданный объект в базу данных.