I'm trying to use the library 'django-formset' to filter drop-down list (ForeignKey objects) when selecting an item in a linked drop-down list (related ForeignKey objects). I think, I did everything according to the instructions, but still the data in the second drop-down list is not filtered. Maybe someone has experience using this library with formset?
What I did:
Model
class TypeCar(models.Model):
title = models.CharField(max_length=20)
class Car(models.Model):
reg_mark = models.CharField(max_length=10)
type_car = models.ForeignKey(
'TypeCar',
...
)
class Order(models.Model):
car = models.ForeignKey(
Car,
...
)
type_car = models.ForeignKey(
TypeCar,
...
)
Form (FormSet):
from formset.widgets import Selectize
class OrderCloseForm(forms.ModelForm):
type_car = forms.ModelChoiceField(
label="Type_car",
queryset=TypeCar.objects.all(),
widget=Selectize(
search_lookup='name__icontains',
placeholder="First, select Type car"
),
required=False,
)
car = forms.ModelChoiceField(
label="Car",
queryset=Car.objects.all(),
widget=Selectize(
search_lookup=['title__icontains'],
filter_by={'type_car': 'type_car__id'},
placeholder="Then, select a Car"
),
required=False,
)
class Meta:
model = Order
fields = (
'type_car',
'car',
)
Formset displays already existing objects in which need to make a selection of the above fields
OrderCloseFormSet = modelformset_factory(
Order,
form=OrderCloseForm,
extra=0,
can_delete=False,
)
Template
<head>
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
<link href="{% static 'formset/css/bootstrap5-extra.css' %}" rel="stylesheet">
<link href="{% static 'formset/css/collections.css' %}" rel="stylesheet">
<script type="module" src="{% static 'formset/js/django-formset.js' %}"></script>
</head>
<django-formset endpoint="{{ request.path }}" csrf-token="{{ csrf_token }}">
{{ formset.management_form }}
{{ formset.non_form_errors.as_ul }}
{% for form in formset %}
{% for field in form %}
{{ field }}
{% endfor %}
{% endfor %}
</django-formset>
In your
OrderCloseForm, thesearch_lookupparameter for thetype_carfield is set to use 'name__icontains', but yourTypeCarmodel does not have anamefield instead it has atitlename field.Correct it like this:
Check if this solve your issue.