1
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))]
[ハイパーリンクのアイデンティティフィールド](http://www.django-rest-framework.org/api-guide/relations/#hyperlinkedidentityfieldは)私が何を考えていますしかし、私がそれを明示的に宣言しなければ、 'employee-list'というURLはありません。私は 'users-list'で試しましたが、うまくいきませんでした。 – alekwisnia
@alekwisnia従業員リストはありませんが、私はちょうどシリアライザフィールドに基づいています。 Djangoはモデル(例えば、 'user-list'や 'user-detail'など)から単数名を作成する傾向があるので、 'user-list'を最初に試してください。 – tredzko