DjangoとRESTの新機能です。値を指定し、REST APIがその値が満たされている行だけを返すようにしたいと考えています。 SQLのようなselect * from exampleTBL where id = 1
し、最初の行が返されます。しかし、それは、URLを介して行うことになります。Django REST APIにフィルタを追加する
url(r'^api/tmpHost/$', views.tmp_HostList.as_view()),
:
class tmp_HostList(APIView):
def get (self, request, format=None):
tmp_hosts = tmp_Host.objects.all()
serializer = tmp_HostSerializer(tmp_hosts, many=True, context={'request': request})
return Response(serializer.data)
def post(self, request, format=None):
serializer = tmp_HostSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
私のURLは次のようになります。最初の行は
私のビューが見えるREST APIを通じて返されwww.website/api/tmpHost/?id=1
とt編私のシリアライザは次のようになります:
class tmp_HostSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
class Meta:
model = tmp_Host
fields = '__all__'
私はこれをどうやってやりますか?私はここで解決策を見たが、彼らは私のために働くようには見えない。それは私がAPIViewと私のシリアライザラインを使用しての違いは次のようになります。serializer = tmp_HostSerializer(tmp_hosts, many=True, context={'request': request})
彼らのような単純なことだろうが:serializer = tmp_HostSerializer
? –
@JustinBrahamそれは 'param'でなければなりません。私は間違いをする –