Как изменить путь к 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