[英]How can I get the request parameter and return django rest-framework
我使用此代碼獲取 API
http://127.0.0.1:8000/api/mytexts/?genre=93
class MyTextSerializer(serializers.ModelSerializer):
class Meta:
model = MyText
fields = ('id','text','genre')
它成功返回id
text
genre
。
那么現在,我想在 json 中返回取值93
或genre=93
。
所以,我修改了代碼,但還沒有弄清楚..
class MyTextSerializer(serializers.ModelSerializer):
fetchBy = serializers.SerializerMethodField()
class Meta:
model = MyText
fields = ('id','text','genre','fetchBy)
def get_fetchBy: # error 'MyTextSerializer' object has no attribute 'get_fetchBy'
return ????
默認情況下,DRF 基於類的視圖將請求對象傳遞給帶有附加上下文的序列化程序。 您可以使用self.context
語法訪問此上下文。 因此,要在序列化程序中獲取查詢參數,您可以執行以下操作:
class MyTextSerializer(serializers.ModelSerializer):
fetchBy = serializers.SerializerMethodField()
class Meta:
model = MyText
fields = ('id','text','genre','fetchBy')
def get_fetchBy(self, obj):
return self.context["request"].query_params.get("genre")
與您的實際問題無關,而是關於變量命名的一小段評論。 請注意,根據PEP8類的方法和屬性名稱應小寫並使用_
作為分隔符。 例如: fetch_by
和get_fetch_by
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.