J'ai obtenu un modèle simple lié à django contrib auth Modèle d'utilisateur. J'aimerais avoir un CRUD pour Company, mais avec des éléments liés comme url d'une liste plutôt qu'une liste d'éléments (c'est-à-dire un lien vers la liste des employés plutôt que vers la liste des URL d'un seul employé). Qu'est-ce qui manque ici?Django-Rest obtenir l'URL de la liste des enfants liés
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))]
[Hyperlinked champ d'identité] (http://www.django-rest-framework.org/api-guide/relations/#hyperlinkedidentityfield) est ce que je pense , mais il n'y a pas d'URL appelée 'employee-list' (si je ne le déclare pas explicite). J'ai essayé avec 'users-list' mais cela n'a pas fonctionné non plus. – alekwisnia
@alekwisnia Il est logique qu'il n'y ait pas de liste d'employés, j'allais juste basé sur vos champs de sérialiseur. Essayez d'abord 'user-list', juste pour être diligent, puisque Django a tendance à créer des noms singuliers hors des modèles (comme 'user-list' et 'user-detail'. – tredzko