2016-03-30 8 views
-1
AssertionError at /api/purchases/person/ 

    It is redundant to specify `source='name'` on field 'Field' in 
serializer 'PurchaseSerializer', because it is the same as the field name. 
Remove the `source` keyword argument. 

私はどこか他の「ソース」を使用していないので、それは、このコードを参照することだと仮定します。ジャンゴAssertionErrorが

class PurchaseSerializer(serializers.HyperlinkedModelSerializer): 
    name = serializers.Field(source='name') 

    class Meta: 
     model = Purchase 
     fields = ['name'] 

私は私が「人」によって購入をフィルタリングすることができるようにしようとしていますデータベースに存在する人物を入力すると何らかの理由で購入を見ることしかできませんでしたが、上記のようなアサーションエラーが発生します。データベースに存在しない人物を入力すると、エラーは発生しませんが、空のJSONが返されます。これは逆のはずですが、なぜこれが機能していないのか分かりません。

Models.py

class Purchase(models.Model): 
     name = models.CharField(max_length=255) 

Urls.py

url(r'^api/purchases/(?P<username>.+)/$', views.PurchaseList.as_view()), 

Views.py

class PurchaseList(generics.ListAPIView): 
    serializer_class = PurchaseSerializer 

    def get_queryset(self): 
     """ 
     This view should return a list of all the purchases for 
     the user as determined by the username portion of the URL. 
     """ 
     username = self.kwargs['username'] 
     return Purchase.objects.filter(name=username) 

答えて

1

エラーメッセージが示唆するようsourceキーワード引数を削除してください:

class PurchaseSerializer(serializers.HyperlinkedModelSerializer): 
    name = serializers.Field() 
+0

あなたの答えはちょうど正しいものでした。serializers.ReadOnlyField()でなければなりませんでした。読んでいるだけのフィールドに書いていなかったので、私はあなたのやり方で別のエラーを投げました。 – Aceboy1993