Robię prostą aplikację użytkownika, w której użytkownik ma jeden lub wiele biznesu. Problem polega na tym, że moje tworzenie formularzy biznesowych nie zapisuje jego danych do bazy danych. Użytkownik ma wszystkie uprawnienia i jest aktywne i mogę zapisać dane z formularza Utwórz użytkownika bez problemu. Co jest nie tak? View.py:

 class crear_negocio(LoginRequiredMixin, FormView):
    template_name = "tienda/crear_negocio.html"
    form_class= Negocio_Form
    success_url = reverse_lazy('tienda_app:crear_negocio')
    login_url = reverse_lazy('register_app:logIn')

forma.py:

class Negocio_Form(forms.ModelForm):
    class Meta:
        model = Negocio_Model
        fields = ("Nombre_Negocio","Administrador","Descipcion_Negocio",'Correo_Negocio','Telefono_Negocio','Direccion_Negocio')

Model.py:

class Negocio_Model(models.Model):
    Nombre_Negocio = models.CharField(max_length=25)
    Administrador = models.ForeignKey(Usuario_Model, on_delete=models.CASCADE)
    Descipcion_Negocio = models.TextField(null=True, blank=True)
    Correo_Negocio = models.EmailField()
    Telefono_Negocio = models.CharField(max_length=13)
    Direccion_Negocio = models.CharField(max_length=25)
    def __str__(self):
        return self.Nombre_Negocio+' '+self.Correo_Negocio+' '+self.Telefono_Negocio+' '+self.Direccion_Negocio

konfiguracja bazy danych:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bdtg1',
        'USER':'juan',
        'PASSWORD':'juanjo123',
        'HOST':'127.0.0.1',
        'PORT':'3306'
    }
}
1
Juan José Jaramillo 21 listopad 2020, 03:09

1 odpowiedź

Najlepsza odpowiedź

A FormView nie .save() forma, w ten sposób nie będzie to spowodować utworzenia rekordu w bazie danych. Domyślnie w przypadku, gdy formularz się powiedzie, przekierowuje do URL sukcesu, to wszystko. Typowy przypadek użycia FormView jest na przykład wysłanie wiadomości e-mail zamiast zapisywania go do bazy danych.

Możesz zastąpić {X0}} Metoda [Django-doc], aby zapisać formularz, ale może być lepiej wykorzystać CreateView [Django-doc]:

from django.views.generic.edit import CreateView

class crear_negocio(LoginRequiredMixin, CreateView):
    template_name = 'tienda/crear_negocio.html'
    form_class= Negocio_Form
    success_url = reverse_lazy('tienda_app:crear_negocio')
    login_url = reverse_lazy('register_app:logIn')
2
Willem Van Onsem 21 listopad 2020, 00:21