Let’s go through the checklist found in the official docs and try a few other things.
Initial check list
- While coping
widgetsfrom otherformyou changed the names. Rightmodel, rightfield, righturl. - Your
urlmust be reversable. Runshellin the Django console and thendjango.urls.reverse('your_url_name')– it must return something. - You use
ModelSelect2MultipleforManyToManyField()andModelSelect2forForeignKey()
Initial check list
- Your
ManyToManyField()should not have athroughtable. There is no point in that at all. - Your
ManyToManyField() in admin should not be altered by being included infilter_horizontal. See the difference on the pictures (the first is without the field being included infilter_horizontaland the second is with)

Without being included in filter_horizontal 
With being included in filter_horizontal
- Don’t forget to set
form = YourForminModelAdmininherited class for your model. - In case you decided to alter the project’s urls, if you have separate ones for development and production, don’t forget to keep that in line 🙂