Django Rest Framework用value_list序列化queryset fetchedn



我正在尝试从表中查询特定列。我试过用这个

team_lenDeserialized = RolesInTeam.objects.values_list('user_id', flat=True).filter(academic_year_id=9).filter(deleted=0)
team_lenDict = RolesInTeamSerializer(team_lenDeserialized, many=True)
team_len = orderedDictToJSON(team_lenDict.data)

之后,我通过一个函数运行它,该函数将它转换为JSON

def orderedDictToJSON(orderedDict):
return json.loads(json.dumps(orderedDict))

然后我去进一步操纵它。但是,如果我尝试序列化和转换team_lenDeserialized,我会得到一个错误,该错误状态为

AttributeError: Got AttributeError when attempting to get a value for field `user_id` on 
serializer RolesInTeamSerializer`.
The serializer field might be named incorrectly and not match any 
attribute or key on the `int` instance.
Original exception text was: 'int' object has no attribute 'user_id'.

这是我那张桌子的型号

class RolesInTeam(models.Model):
user_id = models.IntegerField()
team_id = models.IntegerField()
role_id = models.IntegerField()
deleted = models.IntegerField()
academic_year_id = models.IntegerField()
class Meta:
managed = False
db_table = 'roles_in_team'

和我的串行器

class RolesInTeamSerializer(serializers.ModelSerializer):
class Meta:
model = RolesInTeam
fields = ['id', 'user_id', 'team_id', 'role_id', 'deleted', 'academic_year_id']

我不知道发生了什么,也不知道为什么它不起作用。

您只能使用ModelSerializer序列化模型实例,而values_list()返回元组的查询集,因此当您尝试在查询集上使用序列化程序时,会出现错误。

如果进行常规查询(team_lenDeserialized = RolesInTeam.objects.filter(academic_year_id=9).filter(deleted=0)(,则可以序列化team_lenDeserialized

最新更新