2009-04-14 4 views
5

Tengo un modelo que es esencialmente solo una cadena (django.db.models.CharField). Solo habrá varias instancias de este modelo almacenadas. ¿Cómo podría usar esos valores como opciones en un formulario?Django: ¿Cómo usar instancias de modelo almacenadas como opciones de formulario?

Para ilustrar, el modelo podría ser BlogTopic. Me gustaría ofrecer a los usuarios la posibilidad de elegir uno o varios temas para suscribirse.

empecé a escribir algo como:

from mysite.blog.models import BlogTopic 

choices = [(topic.id, topic.name) for topic in BlogTopic.objects.all()] 

class SubscribeForm(forms.Form): 
    topics = forms.ChoiceField(choices=choices) 

pero no estoy seguro de que cuando se definiría choices. Supongo que solo cuando el módulo se importa por primera vez (es decir, cuando se inicia Django). Obviamente ese no es un buen enfoque.

Parece que sería un requisito común, pero parece que no puedo encontrar ningún ejemplo. Sospecho que me puede estar perdiendo algo obvio aquí. De todos modos, gracias de antemano por sus respuestas.

Respuesta

17
topics = forms.ModelMultipleChoiceField(queryset=BlogTopic.objects.all()) 
+4

Buena respuesta, excepto que no estoy seguro por qué se utiliza ModelMultipleChoiceField - dado el uso de OP ChoiceField, el equivalente apropiado sería sólo ModelChoiceField. –

Cuestiones relacionadas