Django inlineformset - NOT NULL constraint failed: forecasting_forecast.forecast_cost

У меня есть CreateView с инлайн набором форм, который имеет forecast_month & forecast_cost для каждого месяца года, я хочу, чтобы он сохранил все 12 прогнозов для каждого месяца, но я продолжаю получать эту ошибку.

В идеале он должен сохранить 12 прогнозов по одному на каждый месяц

Ошибка: NOT NULL constraint failed: forecasting_forecast.forecast_cost

(я удалил & повторная миграция)

Models.py

class Forecast(models.Model):
      project = models.ForeignKey(Project, on_delete=models.CASCADE)
      forecast_month = models.CharField(verbose_name="Month", max_length=200)
      forecast_cost = models.DecimalField(verbose_name="Forecast", decimal_places=0, max_digits=11)

Views.py

class ForecastCreateView(LoginRequiredMixin, CreateView):
model = Forecast
fields = ["project"]
login_url = "/login/"
success_url = ''

def get_context_data(self, **kwargs):

    financialYears = ["July", "August", "September", "October", "November", "December", "January", "February", "March", "April", "May", "June"]

    initial = [{'forecast_month': forecast}
               for forecast in financialYears]
    ForecastChildFormset = inlineformset_factory(
        Project, Forecast, fields=('project', 'forecast_month', 'forecast_cost'), can_delete=False, extra=len(financialYears), widgets={'forecast_month': forms.Select(attrs={'disabled': True})},
    )
    data = super().get_context_data(**kwargs)
    if self.request.POST:
        data['forecast'] = ForecastChildFormset(self.request.POST, initial=initial)
    else:
        data['forecast'] = ForecastChildFormset(initial=initial)
    return data
    
def form_valid(self, form):
    context = self.get_context_data()
    forecast = context["forecast"]
    form.instance.creator = self.request.user
    if forecast.is_valid():

        self.object = form.save()
        forecast.instance = self.object
        forecast.save()

    else:
        return self.form_invalid(form)
    return super(ForecastCreateView, self).form_valid(form)
Вернуться на верх