私はDjango Frameworkを初めて使いました。Django URLパターン複数のパラメータ(pkなし)
私は、簡単な休息を呼び出したい:
www.abc.com/users/1/cantonments/1/
私はURLパターンに 'PK' を使用している場合は、すべてが箱から出して動作します(PK、PK1、PK2を....)。 しかし、私はいくつかのパーミッション機能を持っていますが、ユーザーとキャノンのために 'upk'と 'cpk'の形式でkwargsのパラメータが必要です。だから私が変更した場合pkにupkすべてが壊れます。どういうわけか、URLには1つのpkが必要です。
これは動作します:
url(r'^users/(?P<pk>[0-9]+)/cantonments/(?P<cpk>[0-9]+)/$',
views.CantonmentDetail.as_view()),
このdoesntの:
url(r'^users/(?P<upk>[0-9]+)/cantonments/(?P<cpk>[0-9]+)/$',
views.CantonmentDetail.as_view()),
はPKで1つのエントリを必要としないURLパターンを持ってする方法はありますか?
P.エラー:
Expected view CantonmentDetail to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.
EDIT:
私の見解は単純です:
# Authenticated User can show Cantonment Detail
class CantonmentDetail(generics.RetrieveAPIView):
serializer_class = serializers.CantonmentSerializer
permission_classes = [permissions.IsAuthenticated]
def get_queryset(self):
return Cantonment.objects.filter(pk=self.kwargs['cpk'])
EDIT2:
私は、オブジェクトを取得するにはget_querysetを変更し、それが動作します。
def get_object(self):
queryset = self.filter_queryset(self.get_queryset())
obj = queryset.get(pk=self.kwargs['cpk'])
return obj
EDIT3:クラスの
lookup_url_kwarg = "cpk"
を使用して も同様に動作します。
は、あなたの意見を示して? – zaidfazil
あなたのview.pyは引数を取るとこれを追加できます – Robert