save() prohibited to prevent data loss due to unsaved related object 'classes'

31 views Asked by At

Hello

Help me please

When I register the information, the first form saves the information, but when I register the second information, it gives an error and does not save the information.

views.py

class ClassesInline():
form_class = ClassesForm
model = Classes
template_name = "classes/classes_create_or_update.html"

def form_valid(self, form):
    named_formsets = self.get_named_formsets()
    if not all((x.is_valid() for x in named_formsets.values())):
        return self.render_to_response(self.get_context_data(form=form))

    kelas = form.save(commit=False)
    kelas.term = self.request.user.term
    kelas.branch = self.request.user.branch
    kelas.personnel_create = self.request.user
    self.object = kelas.save()

    for name, formset in named_formsets.items():
        formset_save_func = getattr(self, 'formset_{0}_valid'.format(name), None)
        if formset_save_func is not None:
            formset_save_func(formset)
        else:
            formset.save()
    return redirect('kelas:classes_index')

def formset_variants_valid(self, formset):

    reservs = formset.save(commit=False)  # self.save_formset(formset, contact)
    # add this, if you have can_delete=True parameter set in inlineformset_factory func
    for obj in formset.deleted_objects:
        obj.delete()
    for reserv in reservs:
        reserv.classes = self.object
        reserv.save()

class classesCreate(ClassesInline, CreateView):

def get_form_kwargs(self):
    kwargs = super().get_form_kwargs()
    kwargs['request'] = self.request
    return kwargs

def get_context_data(self, **kwargs):
    ctx = super(classesCreate, self).get_context_data(**kwargs)
    ctx['named_formsets'] = self.get_named_formsets()
    return ctx

def get_named_formsets(self):
    if self.request.method == "GET":
        return {
            'reservs': ReservationFormSet(prefix='reservs'),
        }
    else:
        return {
            'reservs': ReservationFormSet(self.request.POST or None, prefix='reservs'),
        }

The error that is observed and its reason

enter image description here

0

There are 0 answers