Django как использовать ModelChoiceField в formset_factory

Я пытаюсь использовать modelchoicefield из формы в formset_factory, но я не понимаю ошибку и не знаю, как ее решить.

views.py

def routecreate_view(request):
    orderformset = formset_factory(OrdersRouteForm, can_delete=False, extra=1)
    if request.method == 'POST':
        form = RouteForm(request.POST)
        formset = orderformset(request.POST)
        if form.is_valid() and formset.is_valid():
            # process the data in form.cleaned_data as required

            messages.success(request,
                             "You succesfully created an route.")
            return HttpResponseRedirect(reverse('planner.dashboard'))
    else:
        form = RouteForm()
        formset = orderformset()
    return render(request, 'planner/route.html', {'form': form, 'formset': formset})

forms.py

class OrdersRouteForm(forms.ModelForm):
    route = ModelChoiceField(
        queryset=Order.objects.filter(status=1, delivery_until__gte=datetime.datetime.now(), deleted_at=None),
        label='Order')

    class Meta:
        model = Order
        fields = ("route",)

    def __init__(self, *args, **kwargs):
        super(OrdersRouteForm, self).__init__(*args, **kwargs)
        for visible in self.visible_fields():
            visible.field.widget.attrs['class'] = 'form-control m-2'

            self.fields['route'].label_from_instance = self.label_from_instance

    @staticmethod
    def label_from_instance(obj):
        return "pallets: %s, %s, %s, %s" % (obj.pallet_amount, obj.street, obj.city, obj.postal_code)

template:

{% extends 'base.html' %}
{% block base %}
    <div class="container rounded bg-white mt-5 mb-5">
        <div class="row">
            <div class="col-md-5 border-right mx-auto">
                planner//route
                <div class="p-3 py-5">
                    <form id="form-container" method="POST">
                        {% csrf_token %}
                        {{ form }}
                        {{ formset }}
                        <button id="add-form" type="button">Add Another Bird</button>
                        <button class="btn btn-danger profile-button mt-3" onclick="window.history.back()">Cancel
                        </button>
                        <button class="btn btn-primary float-end mt-3" type="submit">Order</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
{% endblock %}

error:

Cannot assign "<Order: Order object (2)>": "Order.route" must be a "Route" instance.

Я много чего перепробовал, но так и не смог заставить его работать. Любое решение приветствуется.

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

    class Meta:
        model = Order
        fields = ("route",)

Я не понимаю, почему это вызвало проблему, и если кто-нибудь знает и может объяснить это, пожалуйста, не стесняйтесь сделать это.

надеюсь, это поможет кому-нибудь еще с этой проблемой.

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