2009-04-14 4 views
5

Ho un modello che è essenzialmente solo una stringa (django.db.models.CharField). Ci saranno solo diverse istanze di questo modello memorizzato. Come potrei usare quei valori come scelte in un modulo?Django: come utilizzare le istanze di modello memorizzate come scelte di forma?

Per illustrare, il modello potrebbe essere BlogTopic. Mi piacerebbe offrire agli utenti la possibilità di scegliere uno o più argomenti per iscriversi.

ho cominciato a scrivere qualcosa di simile:

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) 

ma non sono sicuro di quando sarebbe definito choices. Presumo solo quando il modulo viene importato per la prima volta (ad es. All'avvio di Django). Ovviamente non è un buon approccio.

Sembra che sarebbe un requisito comune, ma non riesco a trovare alcun esempio. Sospetto che possa mancare qualcosa di ovvio qui. Comunque, grazie in anticipo per le tue risposte.

risposta

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

Buona risposta, tranne non sono sicuro del motivo per cui si utilizza ModelMultipleChoiceField: dato l'utilizzo dell'OP di ChoiceField, l'equivalente appropriato sarebbe solo ModelChoiceField. –