django-forms - tutorial - formularios avanzados django
obtener usuario actual en Django Form (1)
Posible duplicado:
obtener datos de solicitud en forma de Django
Hay una parte de mi Modelo Invitado:
class Guest(models.Model):
event = models.ForeignKey(Event, related_name=''guests'')
user = models.ForeignKey(User, unique=True, related_name=''guests'')
...
Formulario para obtener la respuesta del Invitado:
class RSVPForm(forms.Form):
attending_d= forms.ChoiceField(choices=VISIBLE_ATTENDING_CHOICES, initial=''yes'', widget=forms.RadioSelect)
attending_b = forms.ChoiceField(choices=VISIBLE_ATTENDING_CHOICES, initial=''yes'', widget=forms.RadioSelect)
number_of_guests = forms.IntegerField(initial=0)
comment = forms.CharField(max_length=255, required=False, widget=forms.Textarea)
....
def save(self):
guest = self.guest_class.objects.get(user=1)
guest.attending_status_d = self.cleaned_data[''attending_d'']
guest.attending_status_b = self.cleaned_data[''attending_b'']
guest.number_of_guests = self.cleaned_data[''number_of_guests'']
guest.comment = self.cleaned_data[''comment'']
guest.save()
return guest
El problema está en el método guardar. ¿Cómo puedo asociar invitado con el usuario actualmente conectado?
guest = self.Guest.objects.get(user=1)
En lugar de user=1
, necesito tener una identificación del usuario actualmente conectado.
¡Gracias!
Encontré el camino :)
Escriba un método
__init__
en el formulario:def __init__(self, user, *args, **kwargs): self.user = user super(RSVPForm, self).__init__(*args, **kwargs)
Cambiar la función de vista y pasar request.user al formulario
def event_view(request, slug, model_class=Event, form_class=RSVPForm, template_name=''rsvp/event_view.html''): event = get_object_or_404(model_class, slug=slug) if request.POST: form = form_class(request.user, request.POST) if form.is_valid(): guest = form.save() return HttpResponseRedirect(reverse(''rsvp_event_thanks'', kwargs={''slug'': slug, ''guest_id'': guest.id})) else: form = form_class(request.user) return render_to_response(template_name, { ''event'': event, ''form'': form, }, context_instance=RequestContext(request))
la línea del método save () se vería así ahora:
guest = self.guest_class.objects.get(user=self.user)