How to access QuerySet in Serializers.py

17 Views Asked by At

Here is my serializer.py file


class StoreProductSerializer(serializers.ModelSerializer):
    product = ProductSerializer(read_only=True)
    product_id = serializers.PrimaryKeyRelatedField(
        queryset=Product.objects.all(),
        source='product',
        write_only=True
    )
    store = serializers.StringRelatedField()

    class Meta:
        model = StoreProduct
        fields = ['id', 'price', 'is_available', 'upsell',
                  'product', 'product_id', 'store']

    def validate(self, attrs):
        product = attrs['product']
        store_id=self.context['request'].query_params.get('id')
        if StoreProduct.objects.filter(store_id=store_id,product_id=product).exists():
            rs =  serializers.ValidationError('Product Already Exist') 
            raise rs
        return attrs

Here is a portion of my views.py


class StoreProductView(viewsets.ModelViewSet):
    serializer_class = StoreProductSerializer
    permission_classes = [OnlyOwner,]

    def get_queryset(self):
        id = str(self.request.query_params.get('id'))
        cartitems = CartProduct.objects.filter(
            Q(cart_id=self.request.user.id) & ~Q(sp_id__store_id=id)
        )
        cartitems._raw_delete(cartitems.db)
        return StoreProduct.objects.filter(store_id=id).select_related('product', 'store')

Now the issue is that I don't want this line

if StoreProduct.objects.filter(store_id=store_id,product_id=product).exists():

instead i want to check the query set but i dont know how to access the query set inside serializer file

I tried adding query set in context dictionary but somehow I don't know it didn't worked

0

There are 0 best solutions below