Как изменить путь к url на имя в django вместо id

Простите, если я задаю очень простой вопрос, я только начинаю изучать WebDev и у меня есть вопрос о django url и я использовал rest framework. У меня есть http://localhost:8000/api/projectList/1 и я хочу изменить id на имя в url, например http://localhost:8000/api/projectList/project. Вот код:

model.py

 class ProjectList(models.Model):
   project = models.CharField(max_length=200)
   project_name = models.CharField(max_length=200)
   category = models.CharField(max_length=200)
   academic = models.CharField(max_length=200)

view.py

class ProjectListSerializer(serializers.ModelSerializer):
    class Meta :
        model = ProjectList
        fields = '__all__'

class ProjectListViewset(viewsets.ModelViewSet):
    queryset = ProjectList.objects.all()
    serializers_class = ProjectListSerializer

class ProjectListListView(generics.ListAPIView):
    serializer_class = ProjectListSerializer
    def get_queryset(self):
        return ProjectList.objects.all()

class ProjectId(generics.RetrieveUpdateDestroyAPIView):
    queryset = ProjectList.objects.all()
    serializer_class = ProjectListSerializer

urls.py

urlpatterns = [
    path("", include(router.urls)),
    path("projectList/", ProjectListListView.as_view()),
    path("projectList/<int:pk>", ProjectId.as_view()),
]

Спасибо, извините за мой простой вопрос и плохой английский.

В представлениях и сериализаторе определите lookup_field = project, это переопределит поле id по умолчанию.

Ps - убедитесь, что проект уникален и является первичным ключом.

также измените ваш url, чтобы он принимал строку вместо int(id)

Django Rest Framework ModelViewset не требует объявления отдельного представления для деталей. В ProjectListListView объявите

lookup_field = 'project' 

и удалить

path("projectList/<int:pk>", ProjectId.as_view()),

из urlpatterns

Вернуться на верх