Можно ли изменить отображение атрибута модели Binaryfield в панели администратора Django, основываясь на значении другого атрибута?
Я работаю над проектом, где у меня есть модель, которая хранит некоторые BinaryField в базе данных.
class Entry(models.Model):
...
params = models.JSONField()
body = models.BinaryField()
...
params будет содержать тег с типом элемента body. Например, это может быть html, и body будет html-текстом, или изображение, и body может быть изображением и т. д.
Прямо сейчас детали админки Django выглядят примерно так:
Body: <memory at 0x7355581f0e80>
Можно ли изменить способ отображения этой информации в админке django, основываясь на информации, полученной из других атрибутов?
Спасибо за уделенное время!
Используйте свойство, определяющее, как его рендерить. Например:
from django.contrib import admin
class Entry(models.Model):
# …
params = models.JSONField()
body = models.BinaryField()
@admin.display(description='body')
def render_body(self):
if self.params is not None:
# render it one way
return str(self.body)
else:
return 'something else'
и используйте это в .list_display
[Django-doc]:
class EntryAdmin(admin.ModelAdmin):
list_display = ['render_body']