ModelViewSet нужно переписывать метод create()?
зачем? хочешь сразу сохранить связанную модель? - тогда - да, надо
ну, OneToOneFIeld же обязательный. без него модель не создастся. у меня обязательный*
def create(self, request, *args, **kwargs): # creating app app = App() app.save() campaign_data = dict(request.data) campaign_data["app"] = AppSerializer(app).data campaign_data["shop_id"] = request.user.pk serializer = self.get_serializer(data=campaign_data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) я вот так вот перезаписал. вроде бы нормально, но ругается на самое непонятное. '{"app_type":["\\"[\'wheelio\']\\" is not a valid choice."]}'. wheelio - это валидный choice
значения wheelio\ нет среди доступных у поля в сериализаторе
что значит у поля в сериализаторе? ты имеешь ввиду choices в модели?
да, в поле сериализатора берется из модели
# app itself WHEELIO = "wheelio" ROLLIE = "rollie" SCRATCHY = "scratchy" app_types = ( (WHEELIO, "Wheelio"), (ROLLIE, "Rollie"), (SCRATCHY, "Scratchy"), ) app_type = models.CharField(max_length=64, choices=app_types)
а что отправляешь? - от дебаж
ща скину
{'app_type': ['wheelio'], 'app': ... апп не показываю, потому что там много очень
campaign_data = dict(request.data) -> campaign_data = request.data.dict()
Обсуждают сегодня