【问题标题】:Django REST framework: AttributeError: 'User' object has no attribute 'books'Django REST框架:AttributeError:'User'对象没有属性'books'
【发布时间】:2017-02-24 11:00:55
【问题描述】:

http://127.0.0.1:8000/app_restFramework/users/,返回文字

/app_restFramework/users/ 处的 AttributeError “用户”对象没有属性“书籍”

models.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)

序列化器.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

urls.py

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

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    您尚未在ManyToManyField 中指定related_name。默认为book_set。因此你可以这样做:

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

    如果您想在序列化程序中使用books,您可以在Book 模型中执行此操作:

    owner = models.ManyToManyField(User, related_name="books")
    

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 2015-07-10
      • 2022-01-18
      • 2015-03-12
      • 2017-06-17
      • 2018-03-30
      • 2017-08-11
      • 2016-06-30
      相关资源
      最近更新 更多