'Django - edit various number of formset and each form has own related values

I'm lost in django formsets. I tried many variations and none works as I need. Maybe it is a little bit confusing what my models are :)

What do I want to do? I need to create a view that displays all AssessParameters related to KapTSI and my problem is editing fields [assessment_requirements, value, finding]. Maximum what is was able to solve by using formset was editing those fields but how to display only the assessment_requirements those are related to edited parameter and to all parameters? And the bonus if there is a way with using CBV?

Models.py

class AssessParameter(models.Model):
    application = models.ForeignKey(Application, on_delete=models.CASCADE, blank=True, null=True)
    parameter = models.ForeignKey(Parameter, on_delete=models.DO_NOTHING)
    requirement = models.TextField(blank=True)
    assessment_requirements = models.ManyToManyField(Requirement, related_name="assessments", blank=True)
    value = models.TextField(blank=True, null=True)
    finding = models.ForeignKey(Finding, on_delete=models.DO_NOTHING)
    note = models.TextField(blank=True)
    documents = models.CharField(max_length=1, blank=True)

class KapTsi(models.Model):
    title = models.CharField(max_length=150)
    number = models.CharField(max_length=20)
    tsi = models.ManyToManyField(Standard, related_name="tsis")

    def __str__(self):
        return f"{self.number} | {self.title}"

class ParameterGroup(models.Model):
    title = models.CharField(max_length=150)
    kap_tsi = models.ForeignKey(KapTsi, models.DO_NOTHING)

    def __str__(self):
        return f"{self.kap_tsi} {self.title}"


class Parameter(models.Model):
    parameter_group = models.ForeignKey(ParameterGroup, on_delete=models.DO_NOTHING)
    title = models.CharField(max_length=255)
    standards = models.ManyToManyField(Standard, through="Specification", blank=True)
    description = models.TextField(blank=True)
    active = models.BooleanField(default=True)

    def __str__(self):
        return self.title

foms.py

class AssessParameterForm(forms.ModelForm):
    class Meta:
        model = AssessParameter
        exclude = ['parameter', 'requirement', 'application']


AssessmentParameterFormSet = modelformset_factory(AssessParameter, form=AssessParameterForm, extra=0)

last try: views.py

def assessment_group(request, pk, slug, group):
    application = Application.objects.get(id=pk)
    group = ParameterGroup.objects.get(id=group)
    assessments = AssessParameter.objects.filter(application=application).filter(parameter__parameter_group=group)
    parameter = Requirement.objects.filter(parameter__parameter_group=group)
    formset = AssessmentParameterFormSet(instance=assessments)
    # for form in formset:
    #     form.fields['assessment_requirements'].queryset = parameter
    context = {
        'application': application,
        'formset': formset,
        }
    return render(request, 'assessment/assessment-group.html', context)


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source