[Django]-Django AssertionError at url

3👍

If you want to target by ‘pk’, just rename id -> pk into your url.py:

url(r'^tasks/(?P<pk>[0-9]+)$', views.TaskDetail.as_view(), name='task_detail')

If you want to target by other field than pk,, you have to adjust the url.py, the view.py AND the serializer.py precising a lookup_field (that can be Nested) for example, it could be for you.

url.py:

url(r'^tasks/(?P<owner__username>[0-9]+)$', views.TaskDetail.as_view(), name='task_detail')

view.py:

class TasksMixins(object):
    queryset = Task.objects.all()
    serializer_class=TaskSerializer
    permission_classes=(IsOwnerOrReadOnly,)
    lookup_field = 'owner__username'

serializer.py

class TaskSerializer(serializers.ModelSerializer):
    owner = serializers.SlugRelatedField(slug_field='username',many=False, read_only=True)
    class Meta:
        model = Task
        fields='__all__'
        lookup_field = 'owner__username'

Leave a comment