尝试获取字段值时的属性错误

时间:2015-05-31 19:57:27

标签: python django django-rest-framework

我正在使用django rest框架和我尝试使用的序列化程序正在创建错误。我试图做https://gist.github.com/anonymous/7463dce5b0bfcf9b6767之类的事情,但我仍然得到错误。模型是

class Visitor(models.Model):

user = models.OneToOneField(User)
check_ins = models.IntegerField(default=0)

@classmethod
def create(cls, username, email, password):
    user = User.objects.create_user(username, email, password)
    visitor = cls(user=user)
    visitor.save()
    return visitor

def __str__(self):
    return self.user.username

,默认用户类和序列化程序是

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model=User
        fields = ('username')

class VisitorSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model=Visitor
        fields = ('id','check_ins','user')

我收到此错误

尝试在序列化程序user上获取字段VisitorSerializer的值时,

出现AttributeError。 序列化程序字段可能名称不正确,并且与QuerySet实例上的任何属性或键都不匹配。 原始异常文本是:' QuerySet'对象没有属性' user'。

1 个答案:

答案 0 :(得分:10)

问题是您在不设置many标志的情况下将查询集传递给序列化程序。该错误告诉您序列化程序在访问queryset.user时尝试访问visitor.user,因此您需要通过传递{告诉序列化程序有多个对象(而不是单个对象) {1}}。