Измените поля readonly внутри django adminmodels в зависимости от условия - PullRequest
0 голосов
/ 05 октября 2019

Мне нужно изменить поля только для чтения внутри 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)

, но проблемаявляется то, что мне нужно получить доступ к текущему изменяющемуся объекту, чтобы проверить, что логическое поле имеет значение True. Anyidea, как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...