170 похожих чатов

Всем привет! Есть вопрос по Django (Django Rest Framework).

Вот есть у меня serialiser:

class CompanySerializer(serializers.Serializer):
id = serializers.IntegerField()
name = serializers.CharField(max_length=255, required=True)
start_date = serializers.DateField(required=True)
description = serializers.CharField()
city = serializers.CharField(required=True, max_length=255)
owner_id = serializers.IntegerField(required=True, write_only=True)

def create(self, validated_data):
""" Create company method """

owner_id = validated_data.pop('owner_id', None)
company = Company.objects.create(**validated_data)
company_member = CompanyMember.objects.create(user_id=owner_id,
company_id=company.id,
role='owner')
return company

И ViewSet:

class CompaniesListViewSet(viewsets.ViewSet):
def create(self, request):
""" Creates a new company """

serializer = CompanySerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'company': serializer.data},
status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)

Как я понимаю, если `serializer.is_valid() проходит успешно, а в serializer.save() происходит ошибка, то запрос все равно будет успешным?
Исходя из подходов Django и Django Rest Framework как правильно учесть данный нюанс? Сделать метод, отличный от save или всю логику вынести в какой-то другой объект, отвечающий за создание/обновление объектов, а serialiser использовать только для json-ответов? Заранее благодарю!

1 ответов

9 просмотров

почему не ModelSerializer, для начала?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта