Size: a a a

Django [ru] #STAY HOME

2020 May 30

AD

Alex Dem in Django [ru] #STAY HOME
D. Ouhh
почему валидатор serializer'а может сьедать одно поле?
не могу так наванговать
источник

DO

D. Ouhh in Django [ru] #STAY HOME
D. Ouhh
++. не изменяет. подтягиваю. уже пропускает. осталось только с валидацией разобратся
правда у меня такое чувство, что эта session authentication супер poor designed. лучше на токенах
источник

AD

Alex Dem in Django [ru] #STAY HOME
get_fields получает поля, если в целом
источник

AD

Alex Dem in Django [ru] #STAY HOME
D. Ouhh
правда у меня такое чувство, что эта session authentication супер poor designed. лучше на токенах
да, однозначно
источник

AD

Alex Dem in Django [ru] #STAY HOME
Alex Dem
не могу так наванговать
надо смотреть
источник

AD

Alex Dem in Django [ru] #STAY HOME
dummy антиспамер недоотправляет сообщения
источник

AD

Alex Dem in Django [ru] #STAY HOME
так бесит;
висят мертвым грузом
источник

DO

D. Ouhh in Django [ru] #STAY HOME
Alex Dem
get_fields получает поля, если в целом
а это из self._declared_fields. только что дальше))
источник

DO

D. Ouhh in Django [ru] #STAY HOME
видел, что на stackoverflow кто-то переписывал to_internal_value, но хз стоит ли
источник

AD

Alex Dem in Django [ru] #STAY HOME
D. Ouhh
видел, что на stackoverflow кто-то переписывал to_internal_value, но хз стоит ли
to_internal_value - это ленивая десериализация
ну или хитрая какая-нибудь
источник

AD

Alex Dem in Django [ru] #STAY HOME
ленивая потому, что по-хорошему все вопросы надо решать в сериалайзере поля
источник

AD

Alex Dem in Django [ru] #STAY HOME
но я не понимаю твою проблему, так как ты ничего не скидывал, поэтому - хз =)
источник

DO

D. Ouhh in Django [ru] #STAY HOME
Alex Dem
но я не понимаю твою проблему, так как ты ничего не скидывал, поэтому - хз =)
ща скину
источник

DO

D. Ouhh in Django [ru] #STAY HOME
class ProductImageSerializer(serializers.ModelSerializer):
   class Meta:
       model = ProductImage
       fields = ('product', 'image_id', 'url',)


class ProductSerializer(serializers.ModelSerializer):
   images = ProductImageSerializer(many=True, read_only=True)

   class Meta:
       model = Product
       fields = ('product_id', 'title', 'images',)

ProductImage - FK Product
источник

DO

D. Ouhh in Django [ru] #STAY HOME
Alex Dem
но я не понимаю твою проблему, так как ты ничего не скидывал, поэтому - хз =)
я схитрожопил и обошёл валидацию в ModelSerializer.update, вытянул данные из self.context["request"], но это писец XD
источник

AD

Alex Dem in Django [ru] #STAY HOME
D. Ouhh
class ProductImageSerializer(serializers.ModelSerializer):
   class Meta:
       model = ProductImage
       fields = ('product', 'image_id', 'url',)


class ProductSerializer(serializers.ModelSerializer):
   images = ProductImageSerializer(many=True, read_only=True)

   class Meta:
       model = Product
       fields = ('product_id', 'title', 'images',)

ProductImage - FK Product
это все?
имею ввиду, методов никаких нет?
источник

DO

D. Ouhh in Django [ru] #STAY HOME
Alex Dem
это все?
имею ввиду, методов никаких нет?
    def create(self, validated_data):
       images_data = validated_data.pop("images", [])  # an empty list by default
       product = Product.objects.create(**validated_data)
       for image_data in images_data:
           ProductImage.objects.create(product=product, **image_data)

       return product

   def update(self, instance, validated_data):
       request = self.context['request']

       instance.title = validated_data.get('title', instance.title)

       new_images_data = request.data.get("images")
       new_images_ids = [image.get("image_id") for image in new_images_data]
       
       old_images = instance.images.all()
       for old_image in old_images:  # deleting unselected images
           if old_image.image_id not in new_images_ids:
               old_image.delete()

       for new_image_data in new_images_data:
           ProductImage.objects.update_or_create(**new_image_data)

       instance.save()
       return instance
источник

DO

D. Ouhh in Django [ru] #STAY HOME
(сорри, что так много. думал займёт меньше места на экране)
источник

AD

Alex Dem in Django [ru] #STAY HOME
брать self.context["request"], если нужно, вполне себе окей история
источник

AD

Alex Dem in Django [ru] #STAY HOME
а какое пыли съедается?
источник