Tengo dos modelos en Django: User (predefinido por Django) y UserProfile. Los dos están conectados a través de una clave externa.Cómo crear una vista que guarda los objetos de User y UserProfile en Django
models.py:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True, related_name="connect")
location = models.CharField(max_length=20, blank=True, null=True)
estoy usando UserCreationForm (pre-definido por Django) para el modelo de usuario, y creó otra forma de PerfilUsuario en forms.py
#UserCreationForm for User Model
class UserProfileForm(ModelForm):
class Meta:
model = UserProfile
exclude = ("user",)
I cargue ambos formularios en una plantilla, registration.html, para que el cliente del sitio web pueda ingresar datos sobre los campos contenidos en ambos modelos (por ejemplo: "first_name", "last_name" en el modelo de usuario, "location" en el modelo UserProfile).
Por mi vida, no puedo encontrar la manera de crear una vista para este formulario de registro. Lo que he intentado hasta ahora creará el objeto User, pero no asociará otra información, como la ubicación en el objeto UserProfile correspondiente. ¿Puede alguien ayudarme? Esto es lo que tengo actualmente:
def register(request):
if request.method == 'POST':
form1 = UserCreationForm(request.POST)
form2 = UserProfileForm(request.POST)
if form1.is_valid():
#create initial entry for User object
username = form1.cleaned_data["username"]
password = form1.cleaned_data["password"]
new_user = User.objects.create_user(username, password)
# What to do here to save "location" field in a UserProfile
# object that corresponds with the new_user User object that
# we just created in the previous lines
else:
form1 = UserCreationForm()
form2 = UserProfileForm()
c = {
'form1':UserCreationForm,
'form2':form2,
}
c.update(csrf(request))
return render_to_response("registration/register.html", c)
http://stackoverflow.com/questions/569468/django-multiple-models-in-one-template-using-forms –