0

我有一個產品模型,其中一個模型是「my_test_fn」。這是從我的序列化程序中調用的。我的要求是,我想根據通過url的過濾器進行一些計算。我如何獲取模型屬性中的url參數值?django rest框架:獲取模型屬性中的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 

回答

-1

此邏輯屬於序列化程序,而不是模型。您可以通過self.context['request']訪問它。

+0

這不能在模型中訪問?或者我可以通過串行器將它傳遞給模型? –

+1

您的模型知道請求沒有意義。這是通向高度耦合的代碼的道路,這很容易失敗。讓視圖或序列化程序獲取值並將其傳遞給模型,但不要將模型和請求綁定 – Linovia