私はQオブジェクトを使用しており、companyName、CompanyUrl、Subject、Classフィールドからの入力のすべての組み合わせに対して結果を求めます。 Qオブジェクトでif else条件に適したコードを提案してください。Qオブジェクトを使用し、elif条件を使用して各フィールドに基づいてDjango-createフィルタを作成します。
ApiFiltReq.py
のurl.pyURL(R '^ filtrequest/$'、views.FiltRequest.as_view())
view.py
class FiltRequest(APIView):
def post(self, request, format=None):
request.data['PubIp'] = getUserIP(request)
returnData = ApiFiltReq.filtRequest(self, request.data, format=None)
if returnData == "RECORD_NOT_FOUND": # bad request
return Response(ErrorCodes.ERROR_CODE_LIST[returnData], status=status.HTTP_400_BAD_REQUEST)
elif returnData == "DJANGO_ENTRY_FAILED":
return Response(ErrorCodes.ERROR_CODE_LIST[returnData], status=status.HTTP_400_BAD_REQUEST)
else:
return Response(returnData, status=status.HTTP_202_ACCEPTED)
コード
def filtRequest(request)
if (Q("CompanyName" in request) & Q("CompanyUrl" in request) & Q("Subject" in request) & Q("Class" in request)):
queryset = Product.objects.filter(
Q(CompanyName=request['CompanyName']) | Q(CompanyUrl=request['CompanyUrl']) | Q(
Subject=request['Subject']) | Q(Class=request['Class']))
elif (Q("CompanyName" in request)& Q("CompanyUrl" in request)& Q("Subject" in request)):
queryset = Product.objects.filter(
Q(CompanyName=request['CompanyName']) | Q(CompanyUrl=request['CompanyUrl']) | Q(
Subject=request['Subject']))
elif (Q("CompanyName" in request)& Q("CompanyUrl" in request)&Q("Class" in request)):
queryset = Product.objects.filter(
Q(CompanyName=request['CompanyName']) | Q(CompanyUrl=request['CompanyUrl']) | Q(Class=request['Class']))
elif (Q("CompanyName" in request)&Q("Subject" in request)&Q("Class" in request)):
queryset = Product.objects.filter(
Q(CompanyName=request['CompanyName']) | Q(Subject=request['Subject']) | Q(Class=request['Class']))
elif (Q("CompanyUrl" in request)&Q("Subject" in request)&Q("Class" in request)):
queryset = Product.objects.filter(
Q(CompanyUrl=request['CompanyUrl']) | Q(Subject=request['Subject']) | Q(Class=request['Class']))
elif (Q("CompanyName" in request)& Q("CompanyUrl" in request)):
queryset = Product.objects.filter(
Q(CompanyName=request['CompanyName']) | Q(CompanyUrl=request['CompanyUrl']))
elif (Q("CompanyName" in request)& Q("Subject" in request)):
queryset = Product.objects.filter(
Q(CompanyName=request['CompanyName']) | Q(Subject=request['Subject']))
elif (Q("CompanyName" in request)& Q("Class" in request)):
queryset = Product.objects.filter(
Q(CompanyName=request['CompanyName']) | Q(Class=request['Class']))
elif (Q("CompanyUrl" in request)& Q("Subject" in request)):
queryset = Product.objects.filter(Q(CompanyUrl=request['CompanyUrl']) | Q(
Subject=request['Subject']))
elif (Q("CompanyUrl" in request)&Q("Class" in request)):
queryset = Product.objects.filter(Q(CompanyUrl=request['CompanyUrl']) | Q(Class=request['Class']))
elif (Q("Subject" in request)& Q("Class" in request)):
queryset = Product.objects.filter(Q(Subject=request['Subject']) | Q(Class=request['Class']))
elif ("CompanyName" in request):
queryset = Product.objects.filter(CompanyName=request['CompanyName'])
elif ("CompanyUrl" in request):
queryset = Product.objects.filter(CompanyUrl=request['CompanyUrl'])
elif ("Subject" in request):
queryset = Product.objects.filter(Subject=request['Subject'])
elif ("Class" in request):
queryset = Product.objects.filter(Class=request['Class'])
serializer = ProductSerializer(queryset,many=True)
for item in serializer.data:
sendData.append({"ProductName":item['ProductName']})
実行コマンド... curl -X POST http://localhost:8000/filtrequest/ -d '{"CompanyName": "c3"、 "
これは悪い要求を出し、サーバー上では印刷eが与えます:['CompanyUrl'] 何を返すのですか?['CompanyUrl']:[Subject2]、 "class2:" 1 "}" -H "Content-Type:application/jsonそれを避けるために行うには???
あなたはエラーが表示されてくださいことはできますか? –
私は出力を編集しました...いくつかのリクエストが欠落しています@The_Cthulhu_Kid – vaashh
あなたは間違った順序でそれらを持っています=)最も広いものは最後に行くべきです。 –