Список форм в django

Я пытаюсь создать список элементов, которые принадлежат определенному контракту пользователя в django. В этом списке пользователь должен иметь возможность получить доступ к форме со всеми элементами, которые принадлежат этому контракту, и редактировать их значение.

Я пытался использовать наборы форм, но элементы не связаны с контрактом, несмотря на наличие поля M2M в самом контракте, поэтому ошибка, с которой я столкнулся, выглядит следующим образом:

'contract_generator.Item' has no ForeignKey to 'contract_generator.ClientContract'.

Используются следующие модели:

    class ClientContract(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE)
        original_contract = models.ForeignKey(Contract, on_delete=models.CASCADE, null=True, blank=True)
        contract_name = models.CharField(max_length=60)
        address = models.TextField(blank=True, null=True)
    
        # Value related information
        total_value = models.DecimalField(blank=True, null=True, max_digits=12, decimal_places=2)
        installments = models.IntegerField(null=True, blank=True)
    
        # Items and clausules of the contract
        items = models.ManyToManyField(Item, blank=True, null=True)
        clausules = models.ManyToManyField(Clausule, blank=True, null=True)
    
    
        def __str__(self):
            return self.contract_name

class Item(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    item_name = models.CharField(max_length=90)
    item_type = models.CharField(max_length=90)

    item_value = models.FloatField(blank=True, null=True, max_length=12)
    item_qt = models.FloatField(blank=True, null=True, max_length=12)
    item_total = models.FloatField(blank=True, null=True, max_length=12)

    # Unity options
    METERS = 'MT'
    LITERS = 'LT'
    UNITY_CHOICES = [
        (METERS, 'Meters'),
        (LITERS, 'Liters'),
    ]

    unity = models.CharField(choices=UNITY_CHOICES, default=METERS, max_length=20)

    def __str__(self):
        return self.item_name

Это view, который я построил, используя formset:

@login_required
def adjust_values(request, id):
    ItemFormSet = inlineformset_factory(ClientContract, Item, fields=('item_value', 'item_qt', 'item_total'))
    contract = get_object_or_404(ClientContract.objects.filter(user=request.user), pk=id)
    formset = ItemFormSet(instance=contract)

    if request.method == 'POST':
        formset.ItemForm(request.POST)
        if formset.is_valid():
            formset.save()
            return redirect('/')

    context = {'formset': formset}
    return render(request, 'item_formset.html', context)

Возможно ли создать цикл для перебора форм, элементов, которые связаны в данном конкретном контракте?

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