我正在使用 django 休息框架,并且我尝试使用的序列化器正在创建错误。我正在尝试做类似的事情https://gist.github.com/anonymous/7463dce5b0bfcf9b6767 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')
我收到这个错误
尝试获取字段值时出现 AttributeErroruser
在串行器上VisitorSerializer
。
序列化器字段可能命名不正确并且与序列化器上的任何属性或键不匹配QuerySet
实例。
原始异常文本是:“QuerySet”对象没有属性“user”。
问题是您将查询集传递到序列化器中而没有设置many
旗帜。该错误告诉您序列化程序正在尝试访问queryset.user
当它应该访问时visitor.user
,因此您需要通过传递告诉序列化器有多个对象(而不是单个对象)many=True
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)