Django Admin addchange根据预览字段选择禁用字段。

问题描述 投票:0回答:1

在我的django管理项目中,我有这个模型。

class m_pcontent(models.Model):
    MY_CHOICES = (
        ('T', 'Text'),
        ('I', 'Image'),
    )

    p_id = models.ForeignKey(m_pages, on_delete=models.CASCADE)
    p_type = models.CharField(max_length=1, choices=MY_CHOICES)
    p_content = models.TextField(null=True, blank=True)
    p_images = models.ForeignKey(m_pimg, on_delete=models.CASCADE, null=True, blank=True)
    ...

在我的admin.py中

class m_pcontentAdmin(admin.ModelAdmin):
    list_display = ('p_id', 'p_type', 'p_lang', 'p_dload', 'p_active')
    list_filter = ('p_id', 'p_type', 'p_lang')
    ordering = ('p_id', 'p_type')
    readonly_fields = [...]

我想根据用户在ADDchange区域的p_type选择,将p_content字段或p_images字段设为只读字段(如果选择Text字段,p_images字段必须设为只读字段,如果选择Image字段,p_content字段必须设为只读字段)。

谁能帮帮我?

先谢谢你

django python-3.x django-models django-admin
1个回答
0
投票
# You have to write get_readonly_fields in your admin class

def get_readonly_fields(self, request, obj=None):
    if obj:
        if obj.p_type=='T': # if user select 'T' for Text
            self.readonly_fields + ['p_images',]
        elif obj.p_type=='I': # if user select 'I' for Image
            self.readonly_fields + ['p_content',]
© www.soinside.com 2019 - 2024. All rights reserved.