2010-05-20 6 views
0

J'ai un formulaire contenant un ModelMultipleChoiceField.ModelMultipleChoiceField et reverse()

Est-il possible de trouver un mappage d'URL qui capture un nombre variable de paramètres à partir de ModelMultipleChoiceField?

je me retrouve à faire un appel reverse() dans la vue en passant les arguments de la soumission du formulaire et réalisé que je ne sais pas comment représenter, dans l'URLconf, les multiples valeurs de la balise SELECT pour le rendu ModelMultipleChoiceField ..

Répondre

1

Cela peut ne pas répondre à 100% de votre question, mais la technique que j'utilise pour les paramètres à valeurs multiples dans les URL est de les passer comme blob opaque à la vue et de laisser le décodage.

# URLConf 
(r'^foo/(?P<ids>([0-9]+,?)+)/)$', foo), 

# View 
def foo(request, ids): 
    ids=ids.split(',') 

# Reverse call 
reverse(foo, ','.join(sorted(ids))) 

L'appel à sorted() assure que les listes équivalentes de ids produisent des URL identiques (en supposant un ordre de ids est non significatif). Vous pouvez également faire ids un set si vous ne voulez pas de valeurs en double.

+0

Merci beaucoup. Mon cerveau était manifestement altéré momentanément ... :-) – cethegeek