Сериализаторы django rest framework

#python #django #django-rest-framework #django-views

#питон #джанго #django-rest-фреймворк #джанго-просмотры

Вопрос:

Я новичок в среде Django rest, я работаю над небольшим проектом, и я сталкиваюсь с проблемой с сериализаторами, что мне нужно, это один URL-запрос со списком всех названий школ и другой URL-запрос, содержащий всю информацию о школе(название, город, улица, учащийся). Проблема в том, что в обоих URL-адресах я получаю одну и ту же информацию (имя, город, улица, студент). Кто-нибудь может мне с этим помочь?

serializers.py

 class SchoolSerializer(serializers.Serializer):  is_existing_student = = serializers.BooleanField()  student = StudentSerializer(many=True)   class Meta:  model = School  fields = ['is_existing_student', 'name', 'city', 'street', 'student']    class SchoolNameSerializer(serializers.ModelSerializer):  class Meta:  model = School  fields = ['name']  

views.py

 class SchoolViewSet(mixins.CreateModelMixin, RetrieveModelMixin,   ListModelMixin, GenericViewSet):   serializer_class = SchoolSerializer  queryset = School.objects.all()    class SchoolNameViewSet(mixins.CreateModelMixin, RetrieveModelMixin,   ListModelMixin, GenericViewSet):   serializer_class = SchoolNameSerializer  queryset = School.objects.all()  

urls.py

 router.register(r'schoolname', SchoolNameViewSet)  router.register(r'school', SchoolViewSet)  

Комментарии:

1. Этот код выглядит правильно. Можете ли вы подтвердить, что вы нажимаете schoolname URL-адрес с помощью своего клиента / браузера?

2. @schillingt — «имя школы»: » 127.0.0.1:8000/api/школа «, «школа»: » 127.0.0.1:8000/api/школа » после api оба URL-адреса попадают в школу

3. Откуда это {"schoolname": "127.0.0.1:8000/api/school", "school": "127.0.0.1:8000/api/school"} берется? Похоже, в этом и есть проблема.

4. Я не уверен, откуда вы получаете эту информацию и что это значит. Если вы установите django-расширения, вы можете использовать python manage.py show_urls , и он будет генерировать все различные URL-адреса, которые вы настроили. Оттуда вы можете увидеть URL-адрес, который вы должны использовать для названия школы.