Сделайте внешний ключ редактируемым в наборе форм

Я действительно борюсь с django-forms. В частности, я хотел бы иметь набор форм моей модели OrderMedia, где иностранный ключ к contactMethod также является редактируемым (форма).

Models.py:

class OrderMedia(models.Model):

    CHOICES = (
        ('IDB', _('IDB')),
        ('E', _('E')),
    )

    contactMethod = models.ForeignKey('BusinessContactMethod', on_delete=models.CASCADE)
    publication = models.BooleanField(default=True)
    management = MultiSelectField(choices=CHOICES, blank=True)
    to_create = models.BooleanField(default=False)
    from_order = models.ForeignKey('Order', on_delete=models.CASCADE)



class BusinessContactMethod(models.Model):
    medium = models.ForeignKey(ContactMedium, on_delete=models.CASCADE)
    value = models.CharField(max_length=100, blank=True, null=True)
    active = models.BooleanField(default=True)

Views.py:

class NewOrderPart2(View):
    form_class = OrderForm
    template_name = 'orders/new_order_part2.html'

    def get(self, request, *args, **kwargs):
        est_number = self.kwargs['est_number']
        order = Order.objects.get(est_number=est_number)

        MediumFormset = inlineformset_factory(Order, OrderMedia, exclude=[''], extra=1, can_delete=True)
        mediums = MediumFormset(instance=order)

        form = self.form_class(instance=order)

        return render(request, self.template_name,{
            'form': form,
            'mediums': mediums,
        })

    def post(self, request, *args, **kwargs):
        est_number = self.kwargs['est_number']
        order = Order.objects.get(est_number=est_number)
            
        MediumFormset = inlineformset_factory(Order, OrderMedia, exclude=[''], extra=1, can_delete=True)
        mediums = MediumFormset(request.POST, instance=order)

        form = self.form_class(request.POST, instance=order)

        if mediums.is_valid():
            mediums.save()

        print(mediums)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(f'/order/{est_number}')

        return render(request, self.template_name, 
        {
            'form': form,
            'mediums': mediums,
        })

Forms.py:

class OrderForm(forms.ModelForm):
    class Meta:
        model = Order
        fields = '__all__'
        widgets = {
            'order_start': DateInput,
            'order_end': DateInput,
            'order_publication': DateInput,
            'contact_signed_date': DateInput,
        }

Шаблон:

<form method="POST">
   <div id="form_set">
      {% for form in mediums.forms %}
         <div class='custom-select'>
            {{form }}
         <div>
      {% endfor %} 
   </div>
</form>

Я пробовал искать, как сделать внешние ключи редактируемыми, но нашел только решения для Modelforms, где вы перезаписываете метод сохранения. Но я не могу понять, как это сделать с наборами форм.

Есть советы, как с этим справиться?

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