Mike M. Lin
Mike M. Lin

Reputation: 10072

Why Django's ModelAdmin uses lists over tuples and vice-versa

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.

Upvotes: 3

Views: 1873

Answers (1)

Peter Rowell
Peter Rowell

Reputation: 17713

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.

Upvotes: 8

Related Questions