私はこれをviewset
と定義しています。species_type
distinct_species
という別の動物を返すカスタム関数を作成したいと考えています。個別レコードを取得できません - Django w/Rest Framework
class AnimalViewSet(viewsets.ModelViewSet):
"""
This viewset automatically provides `list`, `create`, `retrieve`,
`update` and `destroy` actions.
"""
queryset = Animal.objects.all()
serializer_class = AnimalSerializer
@list_route()
def distinct_species(self, request):
query_set = Animal.objects.values('species_type').distinct()
serializer = self.get_serializer(query_set, many=True)
return Response(serializer.data)
これは私のAnimal
モデル
class Animal(models.Model):
this_id = models.CharField(max_length=25)
name = models.CharField(max_length=25)
species_type = models.CharField(max_length=25)
breed = models.CharField(max_length=25)
....
ですこれは私がここにルートを登録し、私のAnimalSerializer
class AnimalSerializer(serializers.ModelSerializer):
class Meta:
model = Animal
fields = (
'this_id',
'name',
'species_type',
'breed',
...
)
read_only_fields = ('id', 'created_at', 'updated_at')
です。
# Create a router and register our viewsets with it.
router = DefaultRouter()
router.register(r'animal', AnimalViewSet)
urlpatterns = [
url(r'^api/', include(router.urls)),
url(r'^', IndexView.as_view(), name='index'),
]
しかし、私はこの/api/animal/distinct_species/
を行うときに、私はこのKeyError例外を得た:。
U」ガットKeyError例外 シリアライザ
AnimalSerializer
にフィールドthis_id
の値を取得しようとしたときの\ nシリアライザフィールドの名前が であり、dict
インスタンスの属性またはキーと一致しない可能性があります。 \ n元の例外テキストは:u'this_id 'でした。
'this_id'はモデルのpkである' id'フィールドとは異なりますが、 'this_id'はカスタム入力の別のIDです。 –
あなたの動物モデルを追加し、this_idがどこから来るのかを説明してください – e4c5
ある瞬間.. –