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

Ben 'kaynak' kullanmayın beri başka bir yerde bu kodun bahsediyordur varsayalım:Django AssertionError

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

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

ben çok "kişi" tarafından satın filtre edebilmek çalışıyorum Veritabanında bulunan bir kişiyi yazdığımda, sadece bir şekilde satın alma işlemlerini görebiliyordum. Ancak, yukarıdaki gibi bir Onaylama hatası ile karşılaşıyor. Veritabanında bulunmayan bir kişiyi yazarsam hata alamaz ancak boş bir JSON döndürür. Bu tam tersi olmalı, ancak bunun neden çalışmadığından emin değil.

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) 

cevap

1

hata mesajı da anlaşılacağı gibi source kelime argüman kaldırmayı deneyin:

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

Cevabınız biraz düzeltildi, serializers.ReadOnlyField() olması gerektiğine karar verdikten sonra, sadece okumaya yazmadığımdan başka bir hata attı. – Aceboy1993