El caso particular que tengo es la siguiente:¿Cómo pasar el parámetro inicial a la instancia de ModelForm de django?
que tienen un modelo de transacción, con los campos: from
, to
(ambos son ForeignKey
s a auth.User
modelo) y amount
. En mi forma, me gustaría presentar al usuario 2 campos a rellenar: amount
y from
(to
se establecerá automáticamente se para el usuario actual en una función de vista).
control por defecto para presentar un ForeignKey
es un select-box. Pero lo que quiero llegar, es limitar las opciones a los miembros de QuerySet user.peers
solamente (para que la gente sólo se pueden registrar las transacciones con sus pares y no se inundan con todos los usuarios del sistema).
He intentado cambiar el ModelForm a algo como esto:
class AddTransaction(forms.ModelForm):
from = ModelChoiceField(user.peers)
amount = forms.CharField(label = 'How much?')
class Meta:
model = models.Transaction
Pero parece que tengo que pasar el conjunto de consultas de opciones para ModelChoiceField
aquí - en donde no tengo un acceso a la web request.user
objeto.
¿Cómo puedo limitar las opciones en un formulario para los dependientes del usuario?
¡Muchas gracias! Esto realmente ayudó. – kender
Desde el interior de la clase Form, puede acceder a la instancia del Modelo a través de 'self.instance'. Recuerde que la instancia estará en blanco cuando agregue/cree un nuevo objeto. – JCotton
Un poco más simple es capturar systemid como un argumento normal en su __init __() mientras pasa ** kwargs directamente: 'def __init __ (self, systemid, * args, ** kwargs): super (BackupForm, self) .__ init __ (* args, ** kwargs) ' – JCotton