0

私はProductモデルを持っていて、それには "my_test_fn"という1つのプロパティがあります。これは私のシリアライザから呼び出されます。私の要件は、私は、URLを通過するフィルタに基づいていくつかの計算をしたいです。モデルプロパティでURLパラメータ値を取得するにはどうすればよいですか?django rest framework:モデルプロパティの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のURLに "フィルタ" の値を取得したいです:

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

答えて

-1

このロジックはモデルではなくシリアライザに属します。 self.context['request']でそこにアクセスできます。

+0

これはモデルではアクセスできません。またはシリアライザを介してモデルに渡すことはできますか? –

+1

あなたのモデルが要求を知っていることは意味がありません。これは失敗しがちな高度に結合されたコードへの道です。ビューまたはシリアライザに値を渡し、おそらくそれをモデルに渡しますが、モデルと要求を結びつけません – Linovia

関連する問題