django rest framework:获取模型属性中的url参数值

时间:2017-04-19 10:59:37

标签: python django django-models django-views django-rest-framework

我有一个产品型号,其中一个属性是“my_test_fn”。这是从我的序列化程序调用的。我的要求是,我想根据通过url的过滤器进行一些计算。如何在模型属性中获取url参数值?

我想在my_test_fn

中获得“过滤器”值

models.py

class Product(AbstractProduct):
     product_id = models.UUIDField(default=uuid.uuid4, editable=False)
     ##more fields to go

     def my_test_fn(self):
         filters = self.request.query_params.get('filters', None)
         return {"key":"value"}

serializer.py

class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
       fields = ('id','product_id','sku', 'title', 'my_test_fn',)

views.py

class ProductDetailConfiguration(viewsets.ViewSet):

    lookup_field = 'product_id'


    def retrieve(self, request, product_id=None):
        queryset = Product.objects.filter(product_id=product_id)[0]
        serializer = ProductConfigurationCustomSerializer(queryset, context={'request': request})
        return Response(serializer.data)

API网址:

http://127.0.0.1:8000/api/v1/product-configuration/2FC2AA43-07F5-DCF4-9A74-C840FDD8280A?filters=5

2 个答案:

答案 0 :(得分:0)

我想您想要的东西是不可能的(在模型本身上有my_fn)。

您将需要使用SerializerMethodField,因此您将可以访问该对象,但也可以访问该请求(及其各种参数)。

答案 1 :(得分:-1)

此逻辑属于序列化程序,而不属于模型。您可以通过self.context['request']访问它。