Django crispy-form, данные из формы не сохраняются в базе данных
Я только начинаю свое приключение с Django. Я написал небольшое приложение, в котором, конечно же, есть форма, собирающая данные от пользователя. Эта форма в стандартной версии Django выглядит не очень красиво. Я нашел в интернете информацию о crispy-form и добавил ее в свой проект. Мне удалось создать форму, которая мне нравится, но есть проблема. Я не могу сохранить данные, полученные из формы, в базу данных. Раньше, когда у меня была Django-форма, в файле views.py функция, обрабатывающая эту форму, сохраняла полученные данные в базу данных. Теперь, когда это crispy-форма, я не хочу сохранять. Мои знания слишком малы, чтобы суметь это сделать, поэтому я обращаюсь к вам за помощью. Не могли бы вы взглянуть на приведенные ниже коды и сказать, что я делаю не так?
forms.py
views.py
from django.shortcuts import render, redirect, get_object_or_404
from .forms import FormDane, FormNowaFirma
from .models import Firma, DaneKsiegowe
from django.template import loader
from django.template.context_processors import csrf
from crispy_forms.utils import render_crispy_form
def nowa_firma(request):
form_dane = FormNowaFirma(request.POST or None)
if form_dane.is_valid():
form_dane.save()
return redirect(index)
return render(request, 'form_nowa_firma.html', {'form_nowa_firma':form_dane})
Отчет об ошибке
Ошибка атрибута в /nowa_firma/
У объекта 'FormNowaFirma' нет атрибута 'save'
Метод запроса: POST
URL запроса: http://127.0.0.1:8000/nowa_firma/.
Версия Django: 5.0.4
Тип исключения: AttributeError
Значение исключения:
Объект 'FormNowaFirma' не имеет атрибута 'save'
Местоположение исключения: C:\Users\Marcin\django\biuro\biuroTax\pulpitBiuro\views.py, строка 41, in nowa_firma
Поднято во время выполнения: pulpitBiuro.views.nowa_firma
Исполняемый файл Python: C:\Users\Marcin\django\biuro\venv\Scripts\python.exe
Версия Python: 3.12.2
Python Path:
['C:\Users\Marcin\django\biuro\biuroTax',
'C:\Users\Marcin\AppData\Local\Programs\Python\Python312\python312.zip',
'C:\Users\Marcin\AppData\Local\Programs\Python\Python312\DLLs',
'C:\Users\Marcin\AppData\Local\Programs\Python\Python312\Lib',
'C:\Users\Marcin\AppData\Local\Programs\Python\Python312',
'C:\Users\Marcin\django\biuro\venv',
'C:\Users\Marcin\django\biuro\venv\Lib\site-packages'].
Время сервера: Sun, 28 Apr 2024 05:36:45 +0000
Мои знания слишком малы, чтобы справиться с этой задачей, поэтому я обращаюсь к вам за помощью. Не могли бы вы взглянуть на приведенные ниже коды и сказать, что я делаю не так?
У forms.Form
по умолчанию нет функции save()
, только у forms.ModelForm
есть. Что вполне логично - вы можете сохранить ModelForm в таблице model db, - но куда вы собираетесь сохранить данные forms.Form?
Если раньше это работало, я подозреваю, что это было связано с тем, что форма, которую вы использовали, была основана на модели, и переключение обратно должно помочь вам двигаться в правильном направлении