widgets tutorial personalizados formularios form fields example crear avanzados django-forms django-users

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 :)

  1. Escriba un método __init__ en el formulario:

    def __init__(self, user, *args, **kwargs): self.user = user super(RSVPForm, self).__init__(*args, **kwargs)

  2. 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))

  3. la línea del método save () se vería así ahora:

    guest = self.guest_class.objects.get(user=self.user)