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

Всем привет, есть вопрос по drf допустим, надо принимать на вход

список массивов. Я не знаю изящных способов, которые работали бы, поэтому пишу вот такую дичь:
https://pastebin.com/iCv39aEf

Я практически уверен, что делаю неправильно. Интуитивно хотелось бы просто сделать так:
additions = ProductAdditionSerializer(write_only=True, many=True)
Но так не работает - в запросе, независимо от того, заполняешь поле или нет, пишет 'additions - это поле обязательно"

А как вы делаете?

19 ответов

22 просмотра

чот сложно, пока не вник) но additions = validated_data.pop('additions', None) можно чтобы не падало если нет ключа

Anton-Igin Автор вопроса

это не так важно насчет None, я в целом накидал просто Тут суть в том, что мы хотим сохранить за объектом сразу группу объектов привязанных, то есть в одном поле список массивов. Приходится прикручивать jsonfield и в его валидации уже использовать сериализатор

в целом не очень понятно почему не additions = ProductAdditionSerializer

Anton-Igin Автор вопроса

потому что он тогда не дает на вход подать этот additions. всегда пишет, будто поле не заполнено

можешь подробней описать, я не догоняю

Anton-Igin Автор вопроса

Вот код внутри: class ProductSerializer(serializers.ModelSerializer): ''' Сериализатор продукта ''' additions = ProductAdditionSerializer(write_only=True, many=True) class Meta: model = Product fields = '__all__' read_only_fields = ['price'] Вот код снаружи: def create_product(self): url = '{}/rest/products/'.format(self.root) print(url) with open('test_img.jpg', 'rb') as file_img: data = {'raw_price': 100, 'title': 'Особый продукт компании', 'description': 'dfg', 'category': 1, 'additions': [{'addition': 1, 'price': 100}], 'amount': 1, 'amount_measure': 'GRAM'} files = {'image': file_img} response = requests.post(url, data=data, files=files, headers=self.get_headers()) Ответ - {'additions': ['Обязательное поле.']}

еще больше запутал)) какая ошибка-то?

Anton-Igin Автор вопроса

Ответ - {'additions': ['Обязательное поле.']}

а дебагер что говорит? у меня просто не один сериализатор так написан и все работает без таких вот извращений

Anton-Igin Автор вопроса

дебагер говорит, в request.data добавки есть <QueryDict: {'raw_price': ['100'], 'title': ['Особый продукт компании'], 'description': ['dfg'], 'category': ['1'], 'additions': ["{'addition': 1, 'price': 100}"], 'amount': ['1'], 'amount_measure': ['GRAM'], 'image': [<InMemoryUploadedFile: test_img.jpg ()>]}>

это во вьюхе, а в ините сериалайзера?

кстати, вот в этом варианте деф криэйт такой же? а в деф апдейте предусмотрел?

Anton-Igin Автор вопроса

это я знаю, просто не делал его еще

Anton-Igin Автор вопроса

в общем в init в kwargs тот же словарик

а в валидации?

Anton-Igin Автор вопроса

<QueryDict: {'raw_price': ['100'], 'title': ['Особый продукт компании'], 'description': ['dfg'], 'category': ['1'], 'additions': ["{'addition': 1, 'price': 100}"], 'amount': ['1'], 'amount_measure': ['GRAM'], 'image': [<InMemoryUploadedFile: test_img.jpg ()>]}> Это initial_data

а дальше, там в криэйте и что там до этого?

Anton-Igin Автор вопроса

а до create не доходит, падает с ошибкой что нет additions

ну нужно найти функцию на которой падает и понять почему туда ключ из инита не дошел

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта