[英]How to toggle readonly_fields in Django admin?
需要在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)
我解決了這個問題,首先需要在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 []
現在,如果要編輯模型,則需要檢查此布爾值,然后再進行編輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.