我正在尝试从表中查询特定列。我试过用这个
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
。