我正在使用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
在序列化器上获取字段值时出现AttributeError VisitorSerializer
。序列化程序字段的名称可能不正确,并且与QuerySet
实例上的任何属性或键都不匹配。原始异常文本为:'QuerySet'对象没有属性'user'。
问题是您要在不设置many
标志的情况下将查询集传递给序列化器。错误告诉您序列化程序queryset.user
应在应访问的时间尝试访问visitor.user
,因此您需要通过传递来告知序列化程序有多个对象(而不是单个对象)many=True
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句