Django сохраняет вложенные наборы форм, которые связаны друг с другом столбец не может быть нулевым ошибка

Имеется два вложенных набора форм, и они связаны друг с другом. Когда я увеличиваю дополнительное поле во втором наборе форм, я получаю ошибку column cannot be null. У меня нет проблем с сохранением обеих форм как одной.

Вот моя ошибка :

Ошибка

Вот мои формы :


class UserTaskForm(forms.ModelForm):
    
    class Meta:
        model = UserTask
        fields = ['user_id','task_types_id','store_house_id','description']


class TaskSourcesForm(forms.ModelForm):
    class Meta:
        model = TaskSources
        fields = ['product_id', 'product_amount']




TaskSourcesFormSet = modelformset_factory(
    TaskSources,
    fields=('product_id', 'product_amount',),
    extra=2,
)    



UserTaskFormFormSet = modelformset_factory(
    UserTask,
    fields=('user_id','task_types_id','store_house_id','description',),
    extra=1,
)


вот мои взгляды :

@login_required(login_url="login")
def addUserTask(request):

    user_task_form = UserTaskFormFormSet(queryset=UserTask.objects.none(),initial=[{'user_id': request.user}])
    formset = TaskSourcesFormSet(queryset=TaskSources.objects.none())

    if request.method == 'POST':
        user_task_form = UserTaskFormFormSet(request.POST)
        formset = TaskSourcesFormSet(request.POST)
        
        if user_task_form.is_valid():
            for form in user_task_form:
                user_task = form.save(commit=False)
                user_task.author = request.user
                user_task.save()
            
            if formset.is_valid():
                for form_data in formset:
                    task_sources = form_data.save(commit=False)
                    task_sources.user_task_id = UserTask(id = user_task.id)
                    task_sources.save()
                   
            messages.success(request,"Task added successfully!")
        return redirect(".")

    context = {
        "user_task_form" : user_task_form,
        "formset" : formset,
    }

    return render(request,"user/addtask.html",context)

Как сохранить два набора форм модели вместе (относящиеся друг к другу) в одном представлении? Что является неправильной частью, когда я делаю это?

Я подозреваю, что проблема возникает из-за пустых полей в формах вашего набора форм. Вы можете избежать пустых форм с помощью:

        for form in user_task_form:
            if form.has_changed():
               user_task = form.save(commit=False)
Вернуться на верх