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