2010-09-08 3 views
1

Depuis le tutoriel d'introduction Django, dans \mysite\polls\admin.py:ModelAdmin de Django utilise des listes plus tuples et vice-versa

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) 

Pourquoi inline et list_filter les deux listes d'utilisation, alors que list_display utilise un tuple? Do inlines et list_filters doivent être modifiables pour une raison quelconque? J'essaie juste de comprendre la décision de conception ici.

+0

Vraiment, je cherche un moyen logique de se rappeler si la propriété est une liste ou un tuple. –

Répondre

4

Peu importe lequel vous utilisez car Django (et vous) ne les changera jamais pendant l'exécution. Tout ce qui est important est que la valeur soit un itérable des chaînes. J'utilise souvent foo = ["something"] quand il n'y a qu'un seul élément parce que j'ai été cloué si souvent quand je dis accidentellement foo = ("somthing") au lieu de foo = ("something",).

Je mettrais ce problème de notation d'un-élément-tuple sur ma liste d'irritants de Python, juste après «l'espace significatif». Cela dit, j'aime toujours la langue.

+0

Vérifié Une liste ou un uplet suffira ici - cela a fonctionné dans les deux sens. Et si vous essayez un autre type de données, vous obtiendrez une erreur similaire à ceci: 'PollAdmin.list_filter' doit être une liste ou un tuple. –

+0

Je vais pour les listes. Il me semble que les tuples doivent être utilisés pour des données qui ont une structure naturelle (c'est pourquoi ils sont immuables ... un peu). Il me semble erroné d'utiliser des tuples juste pour obtenir une liste immuable: o Voir cette réponse sur tuples vs lists http://stackoverflow.com/questions/626759/whats-the-difference-between-list-and-tuples – pghalliday

Questions connexes