在我的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字段必须设为只读字段)。
谁能帮帮我?
先谢谢你
# 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',]