2017-05-23 3 views
0

Djangoでget()に問題があります。ウィットに私はそのような機能を持っている:django - get()が複数のトピックを返し、フィルタが機能しない

try: 
     sth = Object.objects.get(t=request.GET.get('data')) 
     if request.method == 'GET': 
     serializer = ObjectSerializer(sth) 
     return Response(serializer.data) 

Iましたエラー:フィルタの

get() returned more than one Object -- it returned 2! 

だから私は入れ替わっていGET:

sth = Object.objects.filter(t=request.GET.get('data')) 

しかし、今、私が取得エラー:

AttributeError: Got AttributeError when attempting to get a value for field `data` on serializer `ObjectSerializer`. 
The serializer field might be named incorrectly and not match any attribute or key on the `QuerySet` instance. 
Original exception text was: 'QuerySet' object has no attribute 'data'. 

提案がありますか?

+1

コードのあなたの一番上の行(それがエラーを生成するようにそれが見えます)が、実際にエラーが言うように、[MCVE] – Sayse

+0

を含めるように更新してみてください、あなたはより多くを持っている、 'GET'を使用していませんあなたのデータベース内の 'data'の値と一致する1つの項目よりも大きいです。この場合、実際に何が起こりたいのかを判断する必要があります。複数のアイテムをシリアル化しますか?または、実際には単一のアイテムがほしいと思うのですが、その場合は、どちらを選択するかを判断する必要があります。フィルタリングに使用できる別のフィールドがありますか? –

+0

私は、テーブルからデータの値と一致するすべての項目を返したいと思います。 – wahtdbogh

答えて

1

シンプル指定many =クエリセットからシリアライザを作成する場合はTrue。

sth = Object.objects.filter(t=request.GET.get('data')) 
    if request.method == 'GET': 
     serializer = ObjectSerializer(sth, many=True) 
     return Response(serializer.data) 
+0

'many = True'を追加すると' 'many 'というキーワードをフィールドに解決できません。選択肢は... – wahtdbogh

+0

@Wahtdbogh更新された回答を試してください。 –

+0

ありがとうございます。 – wahtdbogh