Por lo tanto, mi objetivo es poder filtrar un conjunto de consulta ModelChoiceField en mi ModelForm para incluir únicamente los lugares que request.user ha creado.Enviando objeto request.user a ModelForm desde la vista genérica basada en clase en Django
Mi ModelForm es simplemente:
class PlaceEventForm(models.ModelForm):
class Meta:
model = Event
me gustaría ser capaz de añadir algo como:
def __init__(self, *args, **kwargs):
super(PlaceEventForm, self).__init__(*args, **kwargs)
self.fields['place'].queryset = Place.objects.filter(created_by=request.user)
Sin embargo, me parece que no puede encontrar una manera de acceder a la solicitud en el ModelForm.
mi opinión es de esta manera:
class PlaceEventFormView(CreateView):
form_class = PlaceEventForm
template_name = 'events/event_create.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(PlaceEventFormView, self).dispatch(*args, **kwargs)
No estoy seguro si esto es ni siquiera cerca de lo que debería hacer, pero lo intentó:
def get_form_kwargs(self):
kwargs = super(PlaceEventFormView, self).get_form_kwargs()
kwargs.update({'place_user': self.request.user})
return kwargs
pero me dio el error: init() obtuvo un argumento de palabra clave inesperado 'place_user'
¿Tiene alguna idea sobre este tema? ¿O alguien puede pensar en una forma de filtrar mi ModelChoiceField en la vista sin tener que pasar mi pedido a ModelForm?
Gracias mucho! Funciona perfectamente. – Brian
Tiene problemas para entender cómo hacer esto. –
Hice el ejemplo completo, avíseme si todavía no está claro –