Issue
I am aware of the following questions which are pretty different:
- Django Admin - Disable the 'Add' action for a specific model
- Disable link to edit object in django's admin (display list only)?
My question is a little different: how can I disable the action button in the model list view, but retain the add functionality and links for all other Django parts (for example OneToOne relations and inlines). The code:
@admin.register(Document)
class DocumentAdmin(admin.ModelAdmin):
list_display = ("id", "name", "template", "file")
fields = ["template", "name", "file"]
def has_add_permission(self, request):
return False
disables completely the add functionality of ModelAdmin (Django 3.2+, not tested in early versions).
Solution
A possibility is:
@admin.register(Document)
class DocumentAdmin(admin.ModelAdmin):
list_display = ("id", "name", "template", "file")
fields = ["template", "name", "file"]
def has_add_permission(self, request):
return ("add" in request.path or "change" in request.path)
This will allow to maintain the "/admin/<app>/<model>/add/" functionality, also in popup. The model list view will allow the model edit but it will not have the "add" button.
Answered By - J_Zar Answer Checked By - Timothy Miller (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.