Ho una classe definita Django Form piace questo in Models
:Django ModelChoiceField: il filtraggio della query e l'impostazione valore predefinito come oggetto
class AccountDetailsForm(forms.Form):
...
adminuser = forms.ModelChoiceField(queryset=User.objects.all())
Questo funziona bene, ma ha alcune limitazioni che non riesco a aggirare:
(1) Vorrei utilizzare un filtro sulla queryset, basata su una variabile accountid
passata alla forma, in questo modo:
User.objects.filter(account=accountid)
Questo non può funzionare nel modello perché non è possibile passare a accountid
come variabile, ovviamente.
Ne consegue che lo queryset
deve in qualche modo essere definito nello Views
, ma per quanto posso vedere è un campo obbligatorio nella classe Form.
(2) Vorrei fare la scelta predefinita di AccountDetailsForm
un oggetto nel database, che posso selezionare nella Views
come questo:
User.objects.filter(account=accountid).filter(primary_user=1)
ho provato specificando l'adminuser come default il valore nella forma, (che lavora con altri campi del modulo standard, come 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})
ma senza fortuna.
Devo usare qualcosa di diverso da ModelChoiceField
data la flessibilità di cui ho bisogno qui?
Grazie.
Ciao, grazie per la risposta. L'impostazione del queryset nella vista ha funzionato bene. La parte che non ho potuto elaborare è impostare il valore del modulo associato (anziché predefinito) di ModelChoiceField come _User.objects.filter (account = accountid) .filter (primary_user = 1) _. Grazie. – eli