0
django rest-farmeworkを使用してAPIを実装すると解決できない問題があります:view.pyを使用してパラメータをserializers.pyに渡す方法はありますか?特定のコードは以下の通りである:django rest-farmeworkネストされた関係でパラメータを渡す
models.py
class Category(models.Model):
name = models.CharField(max_length=30)
amount = models.IntegerField()
class Source(models.Model):
name = models.CharField(max_length=50)
rss_link = models.URLField()
amount = models.IntegerField()
# ForeignKey
category = models.ForeignKey(Category)
views.py
class CategoryListView(APIView):
def get(self, request):
# How should this variable be passed to serializers.py?
num_parameter = request.GET.get("num")
category = Category.objects.all()
serializers = CategorySerializers(category, many=True)
return Response(serializers.data)
serializers.py
class SourceSerializer(serializers.ModelSerializer):
class Meta:
model = Source
fields = ("id","name","amount")
class CategorySerializer(serializers.ModelSerializer):
source_set = serializers.SerializerMethodField('get_sources')
def get_sources(self, category):
sources = category.source_set.filter(amount=0)
# I expect the code as follows,the "num_parameter" from views.py
# sources = category.source_set.filter(amount=num_parameter)
return SourceSerializer(instance=sources, many=True).data
class Meta:
model = Category
fields = ("id", "name", "amount", "source_set")
プログラムの実行結果:
[
{
"id": 1,
"name": "study",
"amount": "0",
"source": [
{
"id": 34,
"name": "java",
"amount": "0"
},
{
"id": 35,
"name": "python",
"amount": "0"
}
]
}
]
、どのように "CategorySerializer" それを渡すために "CategoryListView" からである
sources = category.source_set.filter(amount=0)
sources = category.source_set.filter(amount=num_parameter)
"num_parameter" へ:注釈を付けたよう
は、次のコードを修正しましたか?
ありがとうございます。
'' self.context''の結果は '' {} ''なので、 '' self.context ['request'] ''はエラーです "例外値: 'request'"。 – jason
私の悪いです。更新しました。コンテキストを手動で渡す必要があります。 – JoseKilo
問題はあなたの助けによって解決されます、ありがとうございます!@JoseKilo – jason