2017-02-24 8 views
1

http://127.0.0.1:8000/app_restFramework/users/は、app_restFramework /ユーザー/ 'ユーザー' オブジェクトが無属性 'ブック'DjangoのRESTフレームワーク:はAttributeError: 'ユーザー' オブジェクトが何の属性 'ブック'

モデルを持っている/でテキスト

はAttributeErrorを返しませんでした.py

class User(models.Model): 
    username = models.CharField(max_length=100) 

class Book(models.Model): 
    name = models.CharField(max_length=100) 
    author = models.CharField(max_length=100) 
    publisher = models.CharField(max_length=100) 
    time = models.CharField(max_length=100) 
    owner = models.ManyToManyField(User) 

serializers.py

from app_restFramework.models import Book,User 
class UserSerializer(serializers.ModelSerializer): 
    books = serializers.PrimaryKeyRelatedField(many = True, read_only = True) 

    class Meta: 
     model = User 
     fields = ('id', 'username', 'books') 

views.py

class UserList(generics.ListCreateAPIView): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 

あなたはManyToManyFieldrelated_nameを指定していない

url(r'^app_restFramework/users/$', app_restFramework.views.UserList.as_view()), 

答えて

3

urls.py。デフォルトではbook_setになります。したがって、あなたが行うことができます:

book_set = serializers.PrimaryKeyRelatedField(many=True, read_only=True) 

を使用すると、シリアライザでbooksを使用する場合は、Bookモデルでこれを行うことができます。

owner = models.ManyToManyField(User, related_name="books") 
関連する問題