-2

I have a view written in Django which returns JSON response like:

[{"pk": 3222, "model": "test.test", "fields": {"f1:f1, f3:f2"}}......etc]    

The URL that returns this view is: 127.0.0.1:8000/someview/modelname/all

However when I hit this on a browser 127.0.0.1:8000/someview/modelname/all?pk=3222

I do not get the filtered result. How do I achieve this? Or is my understanding of query in a URL wrong.

UPDATE:

In my view:

obj = SomeModel.objects.all()
return HttpResponse(serializers.serialize('json', [obj,]))
4

2 に答える 2

2

これは、コードでフィルタリングをまったく行っていないためです。最初の行には「すべての SomeModel オブジェクトを渡してください」とあり、2 行目には「すべての SomeModel オブジェクトの HTTP 応答が JSON です」と書かれています。

クラスベースのビューを使用していないと仮定すると、次のようなことができます:

from django.shortcuts import get_object_or_404

def SomeView(request):
    obj = SomeModel.objects.all()
    if request.GET.get('pk') is not None:
        obj = get_object_or_404(SomeModel, pk=request.GET.get('pk'))
    return HttpResponse(serializers.serialize('json', obj), content_type="application/json")
于 2013-10-16T21:16:04.187 に答える
1

引数のみを指定する必要がありGET、を使用すると次のように記録 できます。pkpkGET

if request.GET['pk']:
   p_k = int(request.GET['pk'])
   obj = Somemodel.objects.get(pk=p_k)
else:
   obj = SomeModel.objects.all()
于 2013-10-16T21:13:13.223 に答える