tags:

views:

40

answers:

1

From the Django intro tutorial, in \mysite\polls\admin.py:

from django.contrib import admin
#...
class PollAdmin(admin.ModelAdmin):
  #...
  inlines = [ChoiceInline]
  list_display = ('question', 'pub_date', 'was_published_today')
  list_filter = ['pub_date']

admin.site.register(Poll, PollAdmin)

Why do inlines and list_filter both use lists, while list_display uses a tuple? Do inlines and list_filters need to be mutable for some reason?

I'm just trying to understand the design decision here.

+3  A: 

It doesn't matter which you use because Django (and you) will never change them during runtime. All that's important is that the value be an iterable of strings. I often use foo = ["something"] when there is only one element because I've gotten nailed so often when I accidentally say foo = ("somthing") instead of foo = ("something",).

I would put this one-element-tuple-notation issue on my list of Python irritants, right after "significant whitespace". That said, I still love the language.

Peter Rowell
Verified. Either a list or a tuple will do here -- it worked both ways. And if you try some other data type, you'll get an error similar to this: 'PollAdmin.list_filter' must be a list or tuple.
Mike M. Lin