我是新手。在我的教科书中有这样的例子:
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'])。
你能帮我在文件中找到问题的答案吗?为什么会这样? 这可以帮助我详细说明使用文档的一些技巧。
答案 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。
当我看到一只鸟像鸭子一样散步,像鸭子一样游动,像鸭子一样嘎嘎叫时,我称这只鸟为鸭子。