Django 1.4:如何使用文档

时间:2012-10-03 08:05:05

标签: django

我是新手。在我的教科书中有这样的例子:

from django.contrib import admin
from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title', 'timestamp')

admin.site.register(BlogPost, BlogPostAdmin)

当我开始玩它时,我发现我可以在这里使用元组和列表(list_display =('title','timestamp')或list_display = ['title','timestamp'])。

你能帮我在文件中找到问题的答案吗?为什么会这样? 这可以帮助我详细说明使用文档的一些技巧。

3 个答案:

答案 0 :(得分:2)

我不认为它会在Django文档中提及。这是微不足道的Python:在大多数情况下,列表和元组是等价的,因为代码只是期望迭代,这两者都是。

这可能是你缺少的一点 - 它与鸭子打字有关,只要对象暴露了预期的功能(在这种情况下是可迭代的),你就不应该关心它的确切类型。

答案 1 :(得分:0)

在只读序列的地方,列表等同于元组。将dir([])dir(())进行比较,发现它们有很多共同点,但元组缺少可以改变它的所有内容。 http://ideone.com/iHd0h

答案 2 :(得分:0)

我认为该代码有效,因为Python中使用的索引访问器对于元组和列表都是相同的。这不是Django特有的,它适用于所有Python代码。

# a is a list
a = ['a1', 'a2', 'a3']
# while b is a tuple
b = ('b1', 'b2', 'b3',)
c = a
print(c[1])
c= b
print(c[1])

它将打印:

a2
b2

这称为duck typing

当我看到一只鸟像鸭子一样散步,像鸭子一样游动,像鸭子一样嘎嘎叫时,我称这只鸟为鸭子。