在Python

时间:2015-11-03 07:37:47

标签: python django django-queryset

我有一个名为fab的变量和一个Django查询集。如下,

fab = self.request.GET.get('fab')

和我的查询集,

queryset_df = Table1.objects.filter(Q(fab=int(fab)) | Q(fab=int(0+fab))).values_list('masks').distinct()

如我所见,我想在我的Q中在fab前面追加零,因为有时fab会以整数值出现,有时会出现0。当我尝试按+添加时,它返回了一个错误,例如unsupported operand type(s) for +: 'int' and 'unicode'。知道为什么吗?提前致谢。

2 个答案:

答案 0 :(得分:1)

你应该在连接之前将0转换为unicode或字符串。

fab = "0" + fab

您不能将unicode变量与整数连接,也不能将字符串与整数或浮点数连接,因此您需要将其转换为正确的类型。

答案 1 :(得分:1)

听起来你的逻辑错了,

您要么强制将整数强制转换为CharField,要么尝试将字符串强制转换为IntegerField。如果它是前者,那么你总是会为了得到正确的结果而不得不施展价值,如果是后者则领先的0是毫无意义的。

您应该尝试使用正确的字段类型,它甚至可以帮助您进行模型的验证。