2016-03-30 40 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. 

我以爲它指的是這個代碼,因爲我沒有使用「源」其他地方:Django的Asse田

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