drf-nested-routersパッケージを使用してネストされたAPIを構築しています。
ただし/domains/1/nameservers/
、ドメイン#1に関連するネームサーバーだけでなく、所有しているすべてのネームサーバーを取得できます。
問題は、デフォルトのチュートリアルNameServerViewSet実装を使用していることだと思います
class NameserverViewSet(viewsets.ModelViewSet):
queryset = Nameserver.objects.all()
serializer_class = NameserverSerializer
正しい方法でコーディングするのを手伝ってください。
以下は、drf-nested-routersgithubページの例です。
drf-nested-routersは、以下のURLパターンを生成するネストされたルーターを提供します
\ domain \ <-ドメインリスト\ domain {pk} \ <-{pk]からの1つのドメイン
\ domain {domain_pk} \ nameservers \ <-からのドメインのネームサーバー
{domain_pk} \ domain {domain_pk} \ nameservers \ {pk} \ <-{pk}の特定のネームサーバー、{domain_pk}のドメイン
次に例を示します。
# urls.py
from rest_framework_nested import routers
from views import DomainViewSet, NameserverViewSet
(...)
router = routers.SimpleRouter()
router.register(r'domains', DomainViewSet)
domains_router = routers.NestedSimpleRouter(router, r'domains', lookup='domain')
domains_router.register(r'nameservers', NameserverViewSet)
urlpatterns = patterns('',
url(r'^', include(router.urls)),
url(r'^', include(domains_router.urls)),
)
ViewSetの実装方法は次のとおりです。
class NameserverViewSet(viewsets.ViewSet):
queryset = Nameserver.objects.all()
def list(self, request, domain_pk=None):
queryset = self.queryset.filter(domain=domain_pk)
serializer = NameserverSerializer(queryset, many=True)
return Response(serializer.data)
def retrieve(self, request, pk=None, domain_pk=None):
queryset = self.queryset.get(pk=pk, domain=domain_pk)
serializer = NameserverSerializer(queryset)
return Response(serializer.data)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加