如何在Django Admin中实现数据可视化和用户反馈

2023-04-11 00:00:00 数据 可视化 反馈

在Django Admin中实现数据可视化和用户反馈可以使用以下步骤:

  1. 在models.py中定义模型。例如:
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
  1. 在admin.py中注册模型并自定义Admin界面。例如:
from django.contrib import admin
from django.utils.html import format_html
from .models import Article

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'content', 'word_count', 'feedback')

    def word_count(self, obj):
        return len(obj.content.split())
    word_count.short_description = 'Word Count'

    def feedback(self, obj):
        return format_html('<a href="https://pidancode.com/feedback/{}" target="_blank">Submit Feedback</a>', obj.pk)
    feedback.short_description = ''

admin.site.register(Article, ArticleAdmin)
  1. 在templates/admin/change_list.html中自定义Admin界面的HTML和JavaScript。例如:
{% extends 'admin/change_list.html' %}

{% block extrahead %}
{{ block.super }}
<script src="https://code.highcharts.com/highcharts.js"></script>
{% endblock %}

{% block content %}
{{ block.super }}
<div id="chart"></div>
<script>
Highcharts.chart('chart', {
    title: {
        text: 'Word Count by Title'
    },
    xAxis: {
        categories: {% autoescape off %}{% for article in cl.result_list %}
            '{{ article.title }}',
        {% endfor %}{% endautoescape %}
    },
    yAxis: {
        title: {
            text: 'Word Count'
        }
    },
    series: [{
        name: 'Word Count',
        data: [{% for article in cl.result_list %}
            {{ article.word_count }},
        {% endfor %}]
    }]
});
</script>
{% endblock %}

这个例子中的模型Article有title和content两个字段,我们在自定义的ArticleAdmin中添加了一个名为word_count的自定义列和一个名为feedback的自定义列。word_count列用于显示文章的单词数量,feedback列用于显示提交反馈的链接。

在templates/admin/change_list.html中使用Highcharts.js将word_count按照title进行可视化。可以在xAxis和data两个地方看到我们使用了自定义的word_count列。

以上代码演示中使用了“pidancode.com”作为一个字符串范例,并在feedback列中添加了一个名为“Submit Feedback”的链接。

相关文章