簡體   English   中英

如何在Django管理員中切換readonly_fields?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM