在Django中,如果我有一个IntegerField
的模型和使用字符串的查询,那么它足够聪明,可以投射它
class MyClass(Model):
int_field = IntegerField()
所以我可以做类似
的事情# x holds '1234'
MyClass.objects.filter(int_field=x)
这很好用。这也可以保证与列表一起使用吗?考虑
# y holds ['1234', '5678']
MyClass.object.filter(int_field__in=y)
这在Django中是否安全?
答案 0 :(得分:0)
虽然Django可以正确地将字符串转换为整数,但是你总是可以运行for循环来保证安全:
mylist = ['123', '456']
for item in enumerate(mylist):
try:
mylist[item[0]] = int(item[1])
except:
continue
现在,如果您要运行print(list)
,控制台会将[123, 456]
打印到控制台中。如您所见,字符串现在是整数。
注意:如果带有任何字母的字符串可能以某种方式进入列表,您始终可以将continue
语句替换为raise [error_name_here]
语句以保证安全。