我有一個查詢集,我從get_queryset(). 我們知道的是,queryset 的回傳給出了包含模型所有欄位的物件串列。現在我不想序列化模型中的所有欄位并在回應中顯示所有欄位。我只想序列化幾個欄位并顯示在 api 回應中。
例如:
def get_queryset(self):
"""""
filtering happens here on the query parameters.
"""
abc = self.request.GET.get('abc',None)
現在我有一個默認串列函式,我必須在其中僅使用特定欄位呼叫序列化程式類。
def list(self, request, *args, **kwargs):
queryset = self.get_queryset()
# data ={
# "name":queryset.
# }
# serializer = ExampleSerializer(data,many=True)
#serializer = serializers.serialize("json",queryset=queryset,fields=['id','name','address'])
return Response(serializer, status=status.HTTP_200_OK)
當我列印查詢集時print(type(queryset)),它給出了復雜的查詢集,當我列印時,它給出了以下內容
<class 'django.db.models.query.QuerySet'>
現在如何將名稱和地址欄位僅序列化到示例序列化器類??我做了一些挖掘并嘗試執行以下操作
#serializer = serializers.serialize("json",queryset=queryset,fields=['id','name','address'])
但它不像常規 json 那樣提供所需格式的輸出。它還給出了模型:每個物件回應中的示例。
uj5u.com熱心網友回復:
你試過這個嗎?
queryset = self.get_queryset().values('name', 'address')
uj5u.com熱心網友回復:
由于您的代碼不完整,我不確定我是否完全理解您要獲取的內容,但似乎您需要的是ModelSerializer。
get_queryset()由于 DRF 繼承和混合系統,應該用于檢索序列化程式將使用的物件查詢集:
# Serializer
class ExampleSerializer(serializers.ModelSerializer):
class Meta:
model = Example
fields = ('id', 'name', 'address')
# View
class ExampleList(ListAPIView):
serializer_class = ExampleSerializer
def get_queryset(self):
return Example.objects.filter(...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359701.html
標籤:Python json 姜戈 Django 休息框架 django 序列化器
