Quantcast
Channel: Dos formularios en una sola vista Django - CreateView - Stack Overflow en español
Viewing all articles
Browse latest Browse all 3

Dos formularios en una sola vista Django - CreateView

$
0
0

Estoy tratando de crear un solo formulario para un user que tenga campos de ambos formularios, tanto el user como de userprofile que cree para extender el modelo.

Archivo models.py:

from django.db import modelsfrom django.forms import ModelFormfrom django.contrib.auth.models import Userclass UserProfile(models.Model):    user = models.OneToOneField(User, on_delete=models.CASCADE)    date_of_birthday = models.DateField()    address = models.TextField()    phone_number = models.CharField(max_length=11)    def __str__(self):        return self.user.first_nameclass UserProfileForm(ModelForm):    class Meta:        model = UserProfile        fields = '__all__'class UserForm(ModelForm):    class Meta:        model = User        fields = ['username', 'first_name', 'last_name', 'email', 'password']

Archivo views.py:

from django.shortcuts import renderfrom django.views.generic import CreateViewfrom .models import UserProfile, UserProfileForm, UserFormclass UserProfileCreateView(CreateView):    model = UserProfile    template_name = 'userprofiles/user_create.html'    success_url = '/'    form_class = UserProfileForm    def form_valid(self, form):        form.save()        return super(UserCreate, self).form_valid(form)class UserCreateView(CreateView):    model = UserProfile    template_name = 'userprofiles/user_create.html'    success_url = '/'    form_class = UserForm    def form_valid(self, form):        form.save()        return super(UserCreate, self).form_valid(form)

Vista, aquí usando form me muestra en ambos el mismo formulario que es el de modelo de User que trae Django.

<form action="{% url 'users:user_create' %}" method="post">    {% csrf_token %}    {{ form.as_p }}     {{ form.as_p }}<button type="submit">Crear Usuario</button></form>

Sé que tal vez pueda hacerse con Formset o con prefix de la vista basada en clase, pero creo que el prefix no es necesariamente para eso y no lo tengo del todo claro.

Saludos!


Viewing all articles
Browse latest Browse all 3

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>