根据条件更改Django管理模型中的只读字段

时间:2019-10-05 13:42:19

标签: python django

我需要根据条件更改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怎么做?

0 个答案:

没有答案