我需要根据条件更改Django adminModel
中的只读字段。
此模式内有一个BooleanField。
我想检查它的值是否为True
,然后显示一个只读字段列表。如果为假,则应显示另一个列表。
这是我的ModelAdmin
代码:
@admin.register(PurchaseRequest)
class PurchaseRequestAdmin(admin.ModelAdmin):
change_form_template = 'prc_custom_change_admin.html'
form = PurchaseRequestForm
ordering = ['-date_solicited']
# list_filter = (StatusFilter,)
autocomplete_fields = [
'project',
'budget',
'company',
'branch',
'location',
'management',
'effort_type'
]
fieldsets = [
('General', {'fields': [
'project',
'budget',
'company',
'etp',
'branch',
# 'region',
# 'management',
'effort_type',
'observations',
'solution_description',
'justifications',
'provisioned_capex',
'contact_information'
]}),
('Status', {'fields': [
'solicitor',
'date_solicited',
'analizer',
'receiver',
'issuer',
'approver',
'date_approval',
]}),
]
readonly_fields = [
'date_solicited',
'solicitor',
'approver',
'date_approval',
]
inlines = [PRCItemInline, ]
list_display = (
'project', 'prc_status', 'check_analizer', 'approval_view', 'issued', 'received', 'installed',
'id', 'budget', 'company', 'branch', 'item_count',
'print_link')
search_fields = ['items__product__product_code__oracle_code', 'branch__name']
list_filter = (
'completed',
'is_received',
'is_approved',
'is_issued',
)
list_per_page = 10
我已经使用get_readonly_fields
来让管理员更改任何内容:
def get_readonly_fields(self, request, obj=None):
user = request.user
if user.is_superuser:
# Admin can change anything
return self.readonly_fields
return self.readonly_fields # + list(disabled_fields)
但是问题是我需要访问当前更改的对象以检查Booleanfield是否为True。 anyidea怎么做?