Почему Django form.save() возвращает объект(None)?
from django.shortcuts import render
from django.forms import forms
from .models import Chart, ChartData
from .forms import ChartForm, ChartDataForm
import datetime
def home(request):
chart_form = ChartForm(request.POST)
chart_data_form = ChartDataForm(request.POST)
context = {
'chart_form': chart_form,
'chart_data_form': chart_data_form,
}
if chart_form.is_valid():
chart_obj = chart_form.save()
chart = Chart.objects.get(pk=23)
print(chart_obj)
print(chart)
return render(request, 'charts/home.html', context)
chart_form.save() возвращает "объект Chart (None)
В конечном итоге мне нужно передать chart_obj в другую модель для внешнего ключа, но сейчас он там тормозит с ошибкой - save() запрещено для предотвращения потери данных из-за несохраненного связанного объекта.
На сайте администратора я вижу, что объект создан.
Вы должны использовать AutoField для заполнения объекта модели при сохранении объекта, так:
class Chart(models.Model):
id = models.AutoField(primary_key=True)
type = models.CharField(max_length=10)
chartname = models.CharField(max_length=20, null=True)
или просто без поля id:
class Chart(models.Model):
type = models.CharField(max_length=10)
chartname = models.CharField(max_length=20, null=True)
Здесь вам не нужно явно определять id, потому что Django делает это за вас. Если вы хотите переименовать первичный ключ в другой, вы можете использовать метод ниже.