У меня есть простая модель, связанная с моделью пользователя django contrib auth. Я хотел бы иметь CRUD для компании, но со связанными элементами, заданными как URL-адрес списка, а не список элементов (т. Е. Ссылка на список сотрудников, а не список URL-адреса одного сотрудника). Что здесь отсутствует?Django-Rest получить URL-адрес связанных дочерних списков
models.py
from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()
class Company(models.Model):
name = models.CharField(max_lenght=256)
employees = models.ManyToManyField(User)
serializers.py
from rest_framework import serializers
from django.contrib.auth import get_user_model
User = get_user_model()
from .models import Company
class CompanySerializer(serializers.HyperlinkedModelSerializers):
class Meta:
model = Company
fields = ('name', 'employees')
class UserSerializer(serializers.ModelSerializers):
class Meta:
model = User
fields = ('username', 'password', 'email') # and so on
view.py
from rest_framework import viewsets
from django.contrib.auth import get_user_model
User = get_user_model()
from .models import Company
from .serializers import UserSerializer, CompanySerializer
class UserViewset(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all()
class CompanyViewset(viewsets.ModelViewSet):
serializer_class = CompanySerializer
queryset = Company.objects.all()
urls.py
from django conf.urls import url, include
from rest_framework.routers import DefaultRouter
from .views import CompanyViewSet, UserViewSet
router = DefaultRouter()
router.register(r'company', CompanyViewSet)
router.register(r'users', UserViewSet)
urlpatterns = [url(r^api/, include(router.urls))]
[гиперссылкой Идентичность Field] (http://www.django-rest-framework.org/api-guide/relations/#hyperlinkedidentityfield) является то, что я думаю о , но нет URL-адреса, называемого 'employee-list' (если я не объявляю его explicite). Я попробовал с 'users-list', но он тоже не работал. – alekwisnia
@alekwisnia Имеет смысл, что нет списка сотрудников, я просто основывался на ваших полях сериализатора. Сначала попробуйте 'user-list', чтобы быть прилежным, поскольку Django имеет тенденцию создавать уникальные имена от моделей (например,« список пользователей »и« пользовательская деталь ». – tredzko