J'ai un Django classe de Forme définie aime cela, en Models
:
class AccountDetailsForm(forms.Form):
...
adminuser = forms.ModelChoiceField(queryset=User.objects.all())
Ceci fonctionne bien, mais il a quelques limitations, je n'arrive pas à contourner:
(1) je voudrais utiliser un filtre sur le queryset, basé sur une variable accountid
passé pour le formulaire, comme ceci:
User.objects.filter(account=accountid)
Cela ne peut pas fonctionner sur le modèle, car accountid
ne peut pas être passé comme une variable, bien sûr.
Il s'ensuit que l' queryset
doit être en quelque sorte défini dans l' Views
, mais aussi loin que je peux voir, c'est un champ requis dans le Formulaire de classe.
(2) je voudrais faire le choix par défaut de AccountDetailsForm
un objet dans la base de données, je peux sélectionner dans l' Views
comme ceci:
User.objects.filter(account=accountid).filter(primary_user=1)
J'ai essayé en précisant le adminuser comme valeur par défaut dans le formulaire (qui fonctionne avec les autres types de champs de formulaire, comme CharField
):
adminuser = User.objects.filter(account=accountid).filter(primary_user=1)
...
form = AccountDetailsForm({'adminuser': adminuser})
return render_to_response('accounts/edit/accountdetails.html',
{'form': form, 'account':account})
Mais pas de chance.
Dois-je utiliser autre chose que de l' ModelChoiceField
compte tenu de la souplesse-je ici?
Merci.