0

在您使用教程 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)

python manage.py 外壳

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'}
4

1 回答 1

3

您无需将 L 放入对get()or的调用中filter()Ljust 表示变量是 long 类型,而不是常规整数,但实际上变量只包含数字,这同样适用于数据库 - 它只存储数字。因此,您可以使用App.objects.get(id=1)App.objects.filter(downloads__gte=100)不用担心变量是否长。

事实上,python 在打印 long 时会在内部附加 L:

In [12]: a = long(12321312)
In [13]: a
Out[13]: 12321312L

这并没有阻止它将 long 与常规整数进行比较:

In [14]: a > 123
Out[14]: True
于 2013-04-27T22:54:29.273 回答