Почему 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 делает это за вас. Если вы хотите переименовать первичный ключ в другой, вы можете использовать метод ниже.

Вернуться на верх