Remove “add another” in Django admin screen

后端 未结 10 588
孤独总比滥情好
孤独总比滥情好 2020-12-05 13:34

Whenever I\'m editing object A with a foreign key to object B, a plus option \"add another\" is available next to the choices of object B. How do I remove that option?

10条回答
  •  一向
    一向 (楼主)
    2020-12-05 14:02

    Based on cethegeek answer I made this:

    class SomeAdmin(admin.ModelAdmin):
        form = SomeForm
    
        def formfield_for_dbfield(self, db_field, **kwargs):
            formfield = super(SomeAdmin, self).formfield_for_dbfield(db_field, **kwargs)
            if db_field.name == 'some_m2m_field':
                request = kwargs.pop("request", None)
                formfield = self.formfield_for_manytomany(db_field, request, **kwargs)  # for foreignkey: .formfield_for_foreignkey
                wrapper_kwargs = {'can_add_related': False, 'can_change_related': False, 'can_delete_related': False}
                formfield.widget = admin.widgets.RelatedFieldWidgetWrapper(
                    formfield.widget, db_field.remote_field, self.admin_site, **wrapper_kwargs
                )
            return formfield
    

提交回复
热议问题