Size: a a a

2016 November 13

i

ikasymov in pro.python
если для каждого отдельный serializer то будет тупо дублирование кода из за несколько полей
источник

PS

Pavel Shvedov in pro.python
я не вижу у тебя в коде DynamicFieldsModelSerializer
источник

i

ikasymov in pro.python
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')
источник

i

ikasymov in pro.python
вот мой сирилизатор, тепер поняли чего я хочу? :)
источник

i

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

PS

Pavel Shvedov in pro.python
эээ return ProducerUpdateSerializer(queryset) ?
источник

i

ikasymov in pro.python
не понял ваш вопрос
источник

PS

Pavel Shvedov in pro.python
источник

PS

Pavel Shvedov in pro.python
было так
источник

i

ikasymov in pro.python
да
источник

PS

Pavel Shvedov in pro.python
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'))
источник

PS

Pavel Shvedov in pro.python
стало так
источник

i

ikasymov in pro.python
я просто пробовал решить проблему,
источник

i

ikasymov in pro.python
задать ему обьект вдруг сработает :)
источник

i

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

i

ikasymov in pro.python
в интернете про метод get_serializer мало информации
источник

PS

Pavel Shvedov in pro.python
а почему такая древняя версия django-rest-framework используется? :)
источник

PS

Pavel Shvedov in pro.python
мы ведь о django-rest-framework.org говорим?
источник

i

ikasymov in pro.python
да об этом
источник

i

ikasymov in pro.python
и как тут сделать то что я хочу?
источник