需要向django管理页面添加按钮,如果要编辑模型,请按编辑然后编辑所需内容并保存。保存后打开它时,它必须再次不可编辑。那么,怎么做呢?
我有简单的admin.py代码:
from django.contrib import admin
from .models import Order
class OrderAdmin(admin.ModelAdmin):
list_display = ['__str__', 'email', 'project_type', 'price']
list_filter = ['email', 'first_name', 'project_type', 'price']
readonly_fields = ('first_name', 'last_name', 'email', 'phone', 'project_type', 'price')
fields = ('first_name', 'last_name', 'email', 'phone', 'project_type', 'services', 'price', 'slug')
def has_add_permission(self, request):
return False
admin.site.register(Order, OrderAdmin)
答案 0 :(得分:0)
我解决了这个问题,首先需要在 models.py 中创建新的布尔字段(在我的例子中名为 is_editable )并设置默认值为false。然后将我的代码粘贴到admin.py:
def get_readonly_fields(self, request, obj=None):
if obj: # if object is created
if obj.is_editable == False:
return ['first_name', 'last_name', 'email', 'phone', 'project_type', 'services', 'price', 'slug']
else:
return []
else:
return []
现在,如果你想编辑你的模型,你需要检查这个布尔值,然后才编辑。