Python/Django返回带有变量valu的数据类型

2024-04-20 05:44:45 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试使用{varname}}通过Django输出html值时,我的查询返回如下值

(Decimal('567.45'),)
25L
u'test text'

为什么用变量值返回数据类型?我注意到这种情况并不总是发生。对于带有以下查询的eg,会出现此问题。你知道吗

x = list(SegModel.objects.filter(**filterargs).order_by('id').values_list('var_type'))
y = x[0]

但是如果我做了以下操作,我就不会有这个问题,并且返回没有数据类型的实际变量。你知道吗

obj = SegModel.objects.filter(**filterargs).order_by('id')

for x in obj:
      y = x.var_type

有人能解释一下为什么会这样吗?你知道吗

谢谢你, 曼尼什语


Tags: djangoidobjbyobjectsvarhtmltype
2条回答

我刚注意到这个

>>> x=u'gtre'
>>> x
u'gtre'
>>> y='gtre'
>>> y
'gtre'
>>> x==y
True
>>> type(x)
<type 'unicode'>
>>> type(y)
<type 'str'>
>>> str(x)
'gtre'

所以很明显,变量类型只针对某些类型返回。在本例中是unicode,而str返回不带类型的纯值。你知道吗

因此,如果将来我遇到这个问题,我知道如何解决这个问题。你知道吗

>>> str(x)
'gtre'
>>> x
u'gtre'

但是有人能告诉我,在django/python中进行查询时,是什么决定了这些类型(例如str或unicode)?有没有违约?你知道吗

我照你说的做。。bt两个时间输出相同 我要做的是:

s = list(School.objects.all().order_by('id').values_list('school_code'))
        print "list(School.objects.filter(**filterargs).order_by('id').values_list('var_type')):",s
        ex = School.objects.all().order_by('id')
        for i in ex:
            print "i.var_type:",i.school_code

所以它的输出是:

list(School.objects.filter(**filterargs).order_by('id').values_list('var_type')): [(u'BFS',), (u'APS',)]
i.var_type: BFS
i.var_type: APS

奇怪的是。。。可能你做错了。你知道吗

相关问题 更多 >