Comment puis-je construire un Django forme avec les objets de modèle dans un widget de sélection?
Disons que je suis en utilisant le Site Django modèle:
class Site(models.Model):
name = models.CharField(max_length=50)
Mon Site les valeurs sont (clé, valeur):
1. Stackoverflow
2. Serverfault
3. Superuser
Je veux construire un formulaire avec html, sélectionnez widget avec les valeurs ci-dessus:
<select>
<option value="1">Stackoverflow</option>
<option value="2">Serverfault</option>
<option value="3">Superuser</option>
</select>
Je pense que je vais commencer avec le code suivant, mais il est incomplet:
class SiteForm(forms.Form):
site = forms.IntegerField(widget=forms.Select())
Des idées comment je peux l'atteindre avec Django forme?
MODIFIER
Différentes pages de présenter les différents site de valeurs. Un dev page vous montre les sites de développement tandis que d'une cuisine page vous montrer les sites de recettes. En gros, je veux remplir dynamiquement le widget des choix basés sur la vue. Je crois que je peux parvenir à l'heure actuelle par de générer manuellement le code html dans le template.
OriginalL'auteur Thierry Lam | 2010-03-31
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes à la recherche pour
ModelChoiceField
.Mise à JOUR: remarque Surtout la
queryset
argument. Dans la vue de la sauvegarde de la page, vous pouvez changer laQuerySet
vous fournir en fonction de critères qui vous intéressent.Comme dans, fournir les
QuerySet
à utiliser chaque fois que vous instanciez votreForm
? Je ne suis pas sûr. Si vos possibilités sont limitées, il semble assez simple de fournir unForm
sous-classe adaptées à la vue que vous êtes en utilisant, par exemple,DeveloperSitesForm
,EndUserSitesForm
, etc.J'ai été en mesure de le faire à partir du code en question: stackoverflow.com/questions/622982/...
OriginalL'auteur Hank Gay
Je n'ai pas testé, mais je suis en train de penser à quelque chose le long des lignes de...
Edit --
J'ai juste essayé et il génère le choix correctement. Le
choices
argument s'attend à une liste de 2-tuples comme ça...La
.values_list
sera de retour que le format exact à condition d'avoir l'ID et le nom/titre/quelle que soit la manière suivante:.values_list('id', 'name')
. Lorsque le formulaire est enregistré, la valeur de.site
sera l'identifiant et le pk du site sélectionné.OriginalL'auteur T. Stone