Правильный способ создания вложенных объектов и пользовательский метод создания

Если я использую переопределение метода create, какой тип объектов create я должен использовать? Model.objects.create(...) или super.create(...). Оба работают как ожидалось. Как лучше поступить? Извините за глупую формулировку вопроса.

def create(self, validated_data):
    nested_data = validated_data.pop('nesteds', None)
    # THIS ONE
    instance = MODEL.objects.create(**validated_data)
    # OR THIS
    instance = super().create(validated_data)

Почти всегда следует предпочитать использование super().

Вопреки тому, что говорится в комментариях, оба варианта не одинаковы. super() - это функция Python, которая позволяет вам вызывать метод родительского класса. Это очень полезно, если у вас несколько уровней наследования и каждый родительский класс выполняет некоторые дополнительные операции над данными перед созданием объекта.

Кроме того, это поможет вам избежать написания дублирующего кода. Логика создания объекта уже существует в родительском классе, поэтому нет смысла писать ее снова и в подклассе. Просто вызовите super() и позвольте родителю разобраться с этим.

Конечно, бывают редкие случаи, когда вы не хотите выполнять логику родительского класса. В этих случаях следует избегать super().

Вернуться на верх