在教程1中使用shell的文档教程文档中,它向您展示了如何查看模型对象的值。当我使用model_object.__dict__
查看所有列及其值时,一切都以L结尾,这使得从数据库中提取数据变得困难,因为我必须在使用L
时添加filter(), get()
。
class App(models.Model):
title = models.CharField(max_length=200)
downloads = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
dislikes = models.IntegerField(default=0)
pub_date = models.DateTimeField('pub date', default=datetime.datetime.now)
In [11]: app = App.objects.get(title="Game1")
In [12]: app
Out[12]: <app: Game1>
In [13]: app.__dict__
Out[13]:
{'_state': <django.db.models.base.ModelState at 0x3a20810>,
'dowloads': 173L,
'dislikes': 0L,
'id': 1L,
'likes': 0L,
'pub_date': datetime.datetime(2013, 4, 27, 22, 30, 42, tzinfo=<UTC>),
'title': u'Game1'}
答案 0 :(得分:3)
您无需在致get()
或filter()
的电话中加入L. L
只表示变量的类型为long,而不是常规整数,但实际上变量只包含数字,同样适用于数据库 - 它只存储数字。因此,您可以使用App.objects.get(id=1)
或App.objects.filter(downloads__gte=100)
,而无需担心变量是否很长。
事实上,python在打印longs时内部附加L:
In [12]: a = long(12321312)
In [13]: a
Out[13]: 12321312L
不会阻止它与常规integerers比较long:
In [14]: a > 123
Out[14]: True