Consulta de "Forms"

50 views
Skip to first unread message

Alejandra Martinez

unread,
Oct 12, 2014, 12:08:28 PM10/12/14
to djan...@googlegroups.com
Hola, soy nueva usando django. Estaba haciendo un formulario de registro con "forms" pero me surgió un error con el campo "Pais" que es utilizado como ForeignKey el la clase Perfiles
Este es mi código: 
models.py
from django.db import models
from django.contrib.auth.models import User
class Pais(models.Model):
nombre = models.CharField(max_length=50)
def __unicode__(self):
return self.nombre
class Perfiles(models.Model):
usuario = models.OneToOneField(User)
pais = models.ForeignKey(Pais) 
def __unicode__(self):
return self.usuario.username
forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from .models import Pais
class UserForm(UserCreationForm): 
pais = forms.ModelMultipleChoiceField(queryset=Pais.objects.all())
views.py
from django.views.generic import TemplateView, FormView
from .forms import UserForm
from django.core.urlresolvers import reverse_lazy
from .models import Perfiles
class Registrarse(FormView):
template_name = 'inicio/registrarse.html'
form_class = UserForm
success_url = reverse_lazy('registrarse')
def form_valid(self, form):
user = form.save()
perfil = Perfiles()
perfil.usuario = user
perfil.pais = form.cleaned_data['pais']
perfil.save()
return super(Registrarse , self).form_valid(form)

Cuando corro el servidor y trato de registrar a alguien me aparece el siguiente error: No se puede asignar "[<Pais: Argentina>]": "Perfiles.pais" debe ser una instancia de "País".
Si alguien puede orientarme en lo que estoy haciendo mal le agradecere, soy conciente de que debe ser una pavada pero no logro detectarla.
Saludos

Ricardo Azpeitia Pimentel

unread,
Oct 12, 2014, 5:21:20 PM10/12/14
to djan...@googlegroups.com
ModelMultipleChoiceField -> Obviamente regresa una lista de instancia país.

Al hacer `perfil.pais = form.cleaned_data['pais']` te estas asignando una lista de instancias país, no una instancia país.

Mi recomendación es usar ModelChoiceField.

Si tu intención es guardar una lista de instancias vas a tener que cambiar tus modelos. Crear su respectiva tabla, etc..

PD: No repitas temas en la lista.

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Perro Muerto

unread,
Oct 12, 2014, 5:59:52 PM10/12/14
to djan...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages