champs de choix () en tant que jeu de requête?
J'ai besoin de faire un formulaire, qui ont 1 sélectionnez et 1 de saisie de texte. Sélectionnez doit être prise à partir de la base de données.
le modèle ressemble à ceci:
class Province(models.Model):
name = models.CharField(max_length=30)
slug = models.SlugField(max_length=30)
def __unicode__(self):
return self.name
C'est les lignes sont ajoutées uniquement par admin, mais tous les utilisateurs peuvent voir dans les formulaires.
Je veux faire un ModelForm. J'ai fait quelque chose comme ceci:
class ProvinceForm(ModelForm):
class Meta:
CHOICES = Province.objects.all()
model = Province
fields = ('name',)
widgets = {
'name': Select(choices=CHOICES),
}
mais ça ne fonctionne pas. La balise select n'est pas affiché en html. Qu'ai-je tort?
Mise à JOUR:
Cette solution fonctionne comme je l'ai aimerions que cela fonctionne:
class ProvinceForm(ModelForm):
def __init__(self, *args, **kwargs):
super(ProvinceForm, self).__init__(*args, **kwargs)
user_provinces = UserProvince.objects.select_related().filter(user__exact=self.instance.id).values_list('province')
self.fields['name'].queryset = Province.objects.exclude(id__in=user_provinces).only('id', 'name')
name = forms.ModelChoiceField(queryset=None, empty_label=None)
class Meta:
model = Province
fields = ('name',)
source d'informationauteur robos85
Vous devez vous connecter pour publier un commentaire.
Lire Maersu réponse à la méthode qui vient de "travaux".
Si vous souhaitez personnaliser, à savoir que les choix prend une liste de tuples, c'est à dire
(('val','display_val'), (...), ...)
Choix doc:
ModelForm couvre tous vos besoins (vérifiez Également la Liste De Conversion)
Modèle:
Forme:
Vue: