Если у меня есть пользовательский менеджер объектов с пользовательской функцией create для модели:
class CustomManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(custom=True)
def create(self):
kwargs["custom"] = True
return super().create(**kwargs)
class Item(models.Model):
customs = CustomManager()
custom = BooleanField()
...
И я использую этот пользовательский менеджер в качестве набора запросов для представления:
class ItemViewSet(views.ModelViewSet):
queryset = Item.customs.all()
Будет ли функция создания/публикации ItemViewSet автоматически применять kwargs["custom"] = True моего пользовательского менеджера объектов?





Создание в ModelViewSets обрабатывается serializer_class, как показано на CreateModelMixin, и то же самое для обновления — вызывается serializer.save().
Предполагая, что вы используете простой ModelSerializer, это то, что вызывается для serializer.save(), который создает объект:
instance = ModelClass._default_manager.create(**validated_data)
Таким образом, он будет использовать _default_manager вашей модели, которая, согласно документам, будет первым менеджером, объявленным в классе, поэтому теоретически это должен быть ваш пользовательский менеджер.
Кстати, я настоятельно рекомендую просматривать код DRF всякий раз, когда вы оказываетесь в подобных ситуациях. Код действительно простой и доступный. Существуют такие веб-сайты, как Classy Django REST Framework, которые могут упростить навигацию по коду.
Спасибо, я искал ModelViewSet, а не ModelSerializer, чтобы увидеть, как обрабатывается создание.