Я использую Django рамки для моего API. В моем файле views.py я использую Viewset.ModelViewset.
class SchemaViewSet(viewsets.ModelViewSet):
queryset = models.Schema.objects.all()
serializer_class = serializers.SchemaSerializer
Мой URL для этого: http://127.0.0.1: 7000 / api / schema / Это дает мне возможность получить и отправить. Ответ примерно такой:
{
"id": 1,
"name": "yatharth",
"version": "1.1"
},
Чтобы удалить / поставить / патч мне нужно передать идентификатор, который равен 1, например: http://127.0.0.1: 7000 / api / schema / 1 / .
Могу ли я сделать это по имени следующим образом: http://127.0.0.1: 7000 / api / schema / yatharth / вместо идентификатора.
Мой model.py (я могу установить name to unique = True)
class Schema(models.Model):
"""Database model for Schema """
name= models.TextField()
version = models.TextField()
def __str__(self):
return self.name
Мне также нужен параметр id, поэтому удалить его нельзя, но вместо того, чтобы делать запрос по id, мне нужно сделать его по имени (оба уникальны)
что я нашел в django документации остального фреймворка
def retrieve(self, request, pk=None):
queryset = User.objects.all()
user = get_object_or_404(queryset, pk=pk)
serializer = UserSerializer(user)
return Response(serializer.data)
Но не знаете, как изменить первичный ключ?