@propython

Страница 12 из 228
Louis
11.11.2016
19:38:11
и еще pycharm)

ustas
11.11.2016
19:45:40
ага и лично собранную генту вместо убунты)

Google
Louis
11.11.2016
20:18:23
Не, убунта норм

darkwoolf
11.11.2016
20:22:02
конечно, норм)

Alex
11.11.2016
20:58:07
Louis
11.11.2016
20:58:39
Нет
поч?

Павел
12.11.2016
05:19:40
Konstantin
12.11.2016
06:52:12
Павел
13.11.2016
07:17:37
Марк ☢
13.11.2016
11:38:05
Спс!
У тебя какой-то лгбт-аватар

Aleksey
13.11.2016
11:39:03
А в чем проблема с лгбт-аватарами?

Марк ☢
13.11.2016
11:42:43
Сжечь геев

Aleksey
13.11.2016
11:46:45
Целостность чужих анусов заботит?))

Михаил
13.11.2016
11:53:02
наш мир чей -то больной вымысел)

Павел
13.11.2016
11:54:17
У тебя какой-то лгбт-аватар
А мне насрать на твоё мнение

Google
Dmitry
13.11.2016
11:54:35
Хуя вы тут бушуете

Черти

Дети ебанутые

Ilgiz
13.11.2016
12:05:55
Ребят кто работал с rest api есть вопрос.

?

Pavel
13.11.2016
12:06:22
все работали, я подозреваю.

Ilgiz
13.11.2016
12:06:47
я новичок в этом , могу ли я вам в лс задать вопрос?

Марк ☢
13.11.2016
12:06:55
Пейшы в чят

Ilgiz
13.11.2016
12:08:48
есть у меня def get_serializer и в нем я вызываю serializer который должен обновлят данные, но при отправки запроса PUT он пишет такую ошибку Cannot call .is_valid() as no data= keyword argument was passed when instantiating the serializer instance.

Марк ☢
13.11.2016
12:09:14
А можно в виде кода ?

Pavel
13.11.2016
12:09:36
я так понимаю, это django-rest-framework?

Ilgiz
13.11.2016
12:10:12
вот код class ProducerRetrieveUpdateView(generics.RetrieveUpdateAPIView): permission_classes = [ProducerOwnerOrReadOnly] def get_serializer(self, *args, **kwargs): return ProducerUpdateSerializer

у меня там еще есть код внутри функции get_serializer но я его убрал что бы не мешало, проблема только в этом куске кода

да rest api

может надо data=передать экземпляр?

Pavel
13.11.2016
12:22:22
это весь код вьюхи?

Ilgiz
13.11.2016
12:24:18
class ProducerRetrieveUpdateView(generics.RetrieveUpdateAPIView): permission_classes = [ProducerOwnerOrReadOnly] def get_serializer(self, *args, **kwargs): queryset = Producer.objects.get(pk=self.kwargs['pk']) if self.request.user.is_authenticated: return ProducerSerializer(queryset, fields=('short_info',)) if self.request.method == 'PUT' or self.request.method == 'PATCH': return ProducerUpdateSerializer else: return ProducerSerializer(queryset, fields=('website', 'phone', 'email', 'contacts', 'short_info')) def get_queryset(self): return Producer.objects.filter(pk=self.kwargs['pk'])

это вьюха

вот серилизатор class ProducerUpdateSerializer(TaggitSerializer, serializers.ModelSerializer): tags = TagListSerializerField() categories = serializers.StringRelatedField(many=True) class Meta: model = Producer fields = ('id', 'business_type', 'logo', 'name', 'slug', 'country', 'city', 'street_address', 'zip', 'short_info', 'info', 'website', 'categories', 'tags')

при запросе PUT ошибка выходит: Cannot call .is_valid() as no data= keyword argument was passed when instantiating the serializer instance.

Google
Ilgiz
13.11.2016
12:33:38
подскажете в чем проблема?

Pavel
13.11.2016
12:44:04
хм

у Вас какая-то древняя версия django-rest-framework, похоже по предполагаю что неприавльно с get_serializer работаете

там в одном случае возвращается тупо класс serializer'a, в случае с 'PUT" or 'PATH'

а в других -- уже его инстанс

сравните

return ProducerSerializer(queryset, fields=('short_info',)) и return ProducerUpdateSerializer

Ilgiz
13.11.2016
12:47:52
и как же быть?

не знаю что передать ProducerUpdateSerializer что бы сработал, пробовал передать обьект и т.д не получается та же ошибка

Pavel
13.11.2016
13:02:27
я подозреваю что get_serialiser должен вернуть просто класс сериалайзера

не надо туда ничего там передавать

если хотите какую-то логику дальше накрутить, это делается в update или perform_update

не помню уже

Ilgiz
13.11.2016
13:15:27
мне же надо вытаскивать только определенные поля с запрашиваемого обьекта, такое я смог сделать только в get_serializer, и внутри мне надо еще и обновление сделать, и это у меня не получается, по другому никак надо сделать все это именно в get_serializer

Pavel
13.11.2016
13:20:10
ну там у тебя 3 if

каждый из них должен возвращать просто serializer

если нужны специальные поля -- делай отдельные serializer'ы :)

Ilgiz
13.11.2016
13:23:13
а как же DynamicFieldsModelSerializer? Зачем он нужен тогда?

если для каждого отдельный serializer то будет тупо дублирование кода из за несколько полей

Pavel
13.11.2016
13:24:27
я не вижу у тебя в коде DynamicFieldsModelSerializer

Google
Ilgiz
13.11.2016
13:24:54
class DynamicFieldsModelSerializer(serializers.ModelSerializer): def __init__(self, *args, **kwargs): # Don't pass the 'fields' arg up to the superclass fields = kwargs.pop('fields', None) # Instantiate the superclass normally super(DynamicFieldsModelSerializer, self).__init__(*args, **kwargs) if fields is not None: for i in fields: print self.fields.pop(i) class ProducerSerializer(DynamicFieldsModelSerializer): tags = TagListSerializerField() categories = serializers.StringRelatedField(many=True) contacts = ProducerContactSerializer(many=True) country = CountryField(country_dict=True) business_type = ChoicesSerializerField() class Meta: model = Producer fields = ('id', 'business_type', 'logo', 'name', 'slug', 'country', 'city', 'street_address', 'zip', 'short_info', 'info', 'website', 'categories', 'tags', 'contacts', 'email', 'phone') class ProducerUpdateSerializer(TaggitSerializer, serializers.ModelSerializer): tags = TagListSerializerField() categories = serializers.StringRelatedField(many=True) class Meta: model = Producer fields = ('id', 'business_type', 'logo', 'name', 'slug', 'country', 'city', 'street_address', 'zip', 'short_info', 'info', 'website', 'categories', 'tags')

вот мой сирилизатор, тепер поняли чего я хочу? :)

все if работают нормально кроме той где при PUT вызывается другой serializer и вопрос был в том как решить ее?я просто ошибку не понял

Pavel
13.11.2016
13:27:18
эээ return ProducerUpdateSerializer(queryset) ?

Ilgiz
13.11.2016
13:28:33
не понял ваш вопрос

Pavel
13.11.2016
13:29:01
def get_serializer(self, *args, **kwargs): queryset = Producer.objects.get(pk=self.kwargs['pk']) if self.request.user.is_authenticated: return ProducerSerializer(queryset, fields=('short_info',)) if self.request.method == 'PUT' or self.request.method == 'PATCH': return ProducerUpdateSerializer else: return ProducerSerializer(queryset, fields=('website', 'phone', 'email', 'contacts', 'short_info'))

было так

Ilgiz
13.11.2016
13:29:16
да

Pavel
13.11.2016
13:29:22
def get_serializer(self, *args, **kwargs): queryset = Producer.objects.get(pk=self.kwargs['pk']) if self.request.user.is_authenticated: return ProducerSerializer(queryset, fields=('short_info',)) if self.request.method == 'PUT' or self.request.method == 'PATCH': return ProducerUpdateSerializer(queryset) else: return ProducerSerializer(queryset, fields=('website', 'phone', 'email', 'contacts', 'short_info'))

стало так

Ilgiz
13.11.2016
13:30:02
я просто пробовал решить проблему,

задать ему обьект вдруг сработает :)

по теории должно было работать, если юзер авторизован то возвращаем серилизатор с аргументами, если запрос PUT то без аргумента и другой serializer, но почему то не пашет

в интернете про метод get_serializer мало информации

Pavel
13.11.2016
13:42:52
а почему такая древняя версия django-rest-framework используется? :)

мы ведь о django-rest-framework.org говорим?

Ilgiz
13.11.2016
13:51:06
да об этом

и как тут сделать то что я хочу?

там говриться про это:

get_serializer(self, instance=None, data=None, many=False, partial=False) - Returns a serializer instance.

Google
Ilgiz
13.11.2016
13:52:27
по этому я и использую его

Pavel
13.11.2016
13:55:14
а блин. я кажется понял

return ProducerUpdateSerializer(queryset, data=request.data)

как-то так может сработает? :)

Ilgiz
13.11.2016
13:56:05
я уже пробовал :)

Pavel
13.11.2016
14:06:57
фигово

а что он пишет на этом?

Ilgiz
13.11.2016
14:10:49
тоже самая ошибка

Cannot call .is_valid() as no data= keyword argument was passed when instantiating the serializer instance.

Страница 12 из 228