django - TypeError: __init__() got multiple values for keyword argument 'view_name' -
i using django rest framework, , not sure why getting error.
models.py
from __future__ import unicode_literals django.db import models django.contrib.auth.models import abstractuser class user(abstractuser): followers = models.manytomanyfield('self', related_name='followees', symmetrical=false) class post(models.model): author = models.foreignkey(user, related_name = 'posts') title = models.charfield(max_length = 255) body = models.textfield(blank = true, null = true) class photo(models.model): post = models.foreignkey(post, related_name = 'photos') image = models.imagefield(upload_to = '%y/%m/%d') serializers.py
from rest_framework import serializers .models import * class userserializer(serializers.modelserializer): # getting list of posts made particular users using username. posts = serializers.hyperlinkedidentityfield( 'posts', view_name = 'userpost-list', lookup_field = 'username' ) class meta: model = user fields = ('id', 'username', 'first_name', 'last_name', 'posts',) class postserializer(serializers.modelserializer): author = userserializer(required = false) photos = serializers.hyperlinkedidentityfield( 'photos', view_name = 'postphoto-list' ) def get_validated_exclusions(self): # need exclude 'author' since we'll add later # based off request user exclusions = super(postserializer, self).get_validated_exclusions() return exclusions + ['author'] class meta: model = post class photoserializer(serializers.modelserializer): image = serializers.field('image.url') class meta: model = photo views.py
from rest_framework import generics, permissions .serializers import * .models import * class userlist(generics.listcreateapiview): model = user serializer_class = userserializer permission_classes = [ permissions.allowany # publically available ] class userdetail(generics.retrieveapiview): model = user serializer_class = userserializer lookup_field = 'username' class postlist(generics.listcreateapiview): model = post serializer_class = postserializer permission_classes = [ permissions.allowany ] class postdetail(generics.retrieveapiview): model = post serializer_class = postserializer permission_classes = [ permissions.allowany ] class userpostlist(generics.listapiview): """ lists posts of particular user. """ model = post serializer_class = postserializer def get_queryset(self): queryset = super(userpostlist, self).get_queryset() return queryset.filter(author__username = self.kwargs.get('username')) class photolist(generics.listcreateapiview): model = photo serializer_class = photoserializer permission_classes = [ permissions.allowany ] class photodetail(generics.retrieveapiview): model = photo serializer_class = photoserializer permission_classes = [ permissions.allowany ] class postphotolist(generics.listapiview): model = photo serializer_class = photoserializer def get_queryset(self): queryset = super(postphotolist, self).get_queryset() return queryset.filter(post__pk = self.kwargs.get('pk')) urls.py in app directory
from django.conf.urls import patterns, url, include .views import * urlpatterns = [ # user urls url(r'^users/$', userlist.as_view(), name='user-list'), url(r'^users/(?p<username>[0-9a-za-z_-]+)/$', userdetail.as_view(), name='user-detail'), url(r'^users/(?p<username>[0-9a-za-z_-]+)/posts/$', userpostlist.as_view(), name='userpost-list'), # post urls url(r'^posts/$', postlist.as_view(), name='post-list'), url(r'^posts/(?p<pk>\d+)/$', postdetail.as_view(), name='post-detail'), url(r'^posts/(?p<pk>\d+)/photos/$', postphotolist.as_view(), name='postphoto-list'), # photo urls url(r'^photos/$', photolist.as_view(), name='photo-list'), url(r'^photos/(?p<pk>\d+)/$', photodetail.as_view(), name='photo-detail'), ] when try run check command on terminal, or runserver, error: typeerror: init() got multiple values keyword argument 'view_name'
what doing wrong exactly, , how can fix problem?
the first argument hyperlinkedidentityfield view_name. you're passing initial argument, seems same field name; remove argument.
Comments
Post a Comment