I\'ve got an inline formset and I would like to exclude some model objects from being displayed in the formset.
For eg. there is model B which has foreign key to mo
In Django 3, you should use formfield_for_foreignkey.
here is a working example :
class CaracteristiqueInline(admin.TabularInline):
model = Caracteristique
formset = FiltreCaracteristiqueInline
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "id_Champ": # The FK in my table Caracteristique
kwargs["queryset"] = Champ.objects.filter(est_DC_Champ=False)
# Champ is the parent table of Caracteristique
# est_DC_Champ is a field of the table Champ
return super().formfield_for_foreignkey(db_field, request, **kwargs)
extra = 0
With this, in your Tabular View, the choices in the dropdown of your FK Field will be filtered.