Есть ли способ показать графику Django Matplotlib в списке моделей?
Я добавил график, который показывает % пользователей, имеющих не стандартное изображение на моей платформе, и я могу видеть график без проблем, когда я вхожу в раздел модификации.
Но когда я вхожу в список моделей, он отображается так:
Я хочу сделать так, чтобы та же самая картинка отображалась в разделе модификации, но в списке моделей. Мне удалось сделать это с изображениями пользователей, добавив скрипт javascript в html админку, но я не нашел способа сделать это здесь.
{% extends "admin/change_list.html" %}
{% load static %}
{% block content %}
<!-- Render the rest of the ChangeList view by calling block.super -->
<script>
window.onload = function(){
textFigure = document.querySelectorAll(".field-figure")
}
</script>
{{ block.super }}
{% endblock %}
Это то, что я могу сделать, чтобы получить список моделей и извлечь каждую графическую фигуру, но я не могу найти способ преобразовать список в изображения.
figures.py
import matplotlib.pyplot as plt
from login.models import Usuario
def grafico():
usrsSinFoto = Usuario.objects.filter(profilepicture = "fotos_perfil/foto_default.png").count()
usrsConFoto = Usuario.objects.all().count() - usrsSinFoto
labels = 'Usuarios sin foto', "Usuarios con foto"
sizes = [usrsSinFoto, usrsConFoto]
explode = (0, 0.1)
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
return fig1
admin.py
class GraficoAdmin(admin.ModelAdmin):
readonly_fields = ["created"]
list_display = ("title", "figure", "created")
ordering = ("title", "created")
search_fields = ["title"]
date_hierarchy = "created"
def __str__(self):
return Grafico.title
admin.site.register(Grafico, GraficoAdmin)
models.py
from django_matplotlib import MatplotlibFigureField
class Grafico(models.Model):
title = models.CharField(max_length=200, verbose_name="Titulo")
figure = MatplotlibFigureField(figure='grafico', verbose_name='Grafico', silent=True)
created = models.DateTimeField(verbose_name="Fecha de Creacion", auto_now_add=True)
class Meta:
verbose_name = "Grafico"
verbose_name_plural = "Graficos"
ordering = ["title"]
def __str__(self):
return self.title