me gustaría hacer un conjunto de consultas, donde se utiliza el usuario actual como un filtro en un ModelForm:Cómo usar la solicitud en un ModelForm en Django
class BookSubmitForm(ModelForm):
book = forms.ModelChoiceField(queryset=Book.objects.filter(owner=request.user),)
...
¿Se pasa Django la solicitud a la forma? ¿Es una buena práctica? ¿Cómo puedo usar la solicitud? (Por supuesto, la solicitud de nombre no está definido)
Editar:
Probé otra solución que es llamar a la forma en la vista pasándole la solicitud:
form = BookSubmitForm(request)
y luego en la forma Yo uso esto:
class BookSubmitForm(ModelForm):
def __init__(self, request, *args, **kwargs):
super(BookSubmitForm, self).__init__(*args, **kwargs)
self.fields["library"].queryset = Library.objects.filter(owner=request.user)
Funciona y el código tiene el formato. Ahora no estoy seguro de que sea la mejor solución, ¿podría mejorarse?
Tienes razón, funciona. Me gustaría saber si es posible poner el código en la forma, solo para fines de organización y limpieza global. – Bastian
Sí, es posible y, a menudo, es una buena idea para mantener limpio el código de la vista. He actualizado con un ejemplo. – AdamKG