Search code examples
pythondjango-formsdjango-admindjango-cmsdjango-widget

manytomany filter horizontal didn't work django admin


Getting below error while add a field in LabelLink model Currently I am working on django-cms and want to change current admin widget.

IntegrityError at /admin/myapp/labellinkmodel/add/ NOT NULL constraint failed: myapp_labellink_links.sort_value

models.py

class LinkPluginModel(CMSPlugin):
    .....
    label = models.CharField(max_length=200)
    link = models.URLField()


class LabelLink(CMSPlugin):
    ...
    links = models.ManyToManyField(LinkPluginModel,related_name="links" ,blank=True)

admin.py

class LabelLinkAdmin(admin.ModelAdmin):
    filter_horizontal = ('links',)

admin.site.register(LabelLink,LabelLinkAdmin)

Solution

  • create a forms.py and add this code. It will definitely solve your problem.

    class LabelLinkForm(ModelForm):
    
      class Meta:
        model = Model Name
        fields="__all__"
    
      def __init__(self, *args, **kwargs):
        super(LabelLinkForm, self).__init__(*args, **kwargs)
        self.fields['links'].required = False