Python 3.x ChartJS标签名称未显示,仅显示ID

Python 3.x ChartJS标签名称未显示,仅显示ID,python-3.x,django-rest-framework,django-views,chart.js,chartjs-2.6.0,Python 3.x,Django Rest Framework,Django Views,Chart.js,Chartjs 2.6.0,我已经搜索这个话题好几天了,最近在朋友们的帮助下取得了很大的进步。我无法使数据正确显示,现在它确实显示了。剩下的最后一件事是让标签正确显示。我发现了一个类似的问题,并怀疑我可能能够使用数组,但不能完全理解语法。这是类似的问题。是工作正常的代码,只是显示外键的ID,而不是实际名称。如果从图表标签循环中删除.id,则图表根本不会显示。无论出于何种原因,我似乎无法访问数据的名称,只能访问ID。提前感谢您的帮助 我的HTML {% extends 'base5.html' %} {% block bo

我已经搜索这个话题好几天了,最近在朋友们的帮助下取得了很大的进步。我无法使数据正确显示,现在它确实显示了。剩下的最后一件事是让标签正确显示。我发现了一个类似的问题,并怀疑我可能能够使用数组,但不能完全理解语法。这是类似的问题。是工作正常的代码,只是显示外键的ID,而不是实际名称。如果从图表标签循环中删除.id,则图表根本不会显示。无论出于何种原因,我似乎无法访问数据的名称,只能访问ID。提前感谢您的帮助

我的HTML

{% extends 'base5.html' %}

{% block body_block %}
<div class="box6">
          <h1 class="title">Number of Books By Author</h1>
<canvas id="myChart"></canvas>
<div>

  <script>
  var endpoint = '{% url "Books:chart_data" %}'
  var defaultData = [];
  var labels = [];
  array = {{ procedures3 }}
  $.ajax({
      method: "GET",
      credentials: 'same-origin',
      url: endpoint,
      success: function(data){
          defaultData = data.default
          var ctx = document.getElementById("myChart");
          var myChart = new Chart(ctx, {
              type: 'bar',
              data: {
                  labels: [{% for i in book %}{{ i.id }},{% endfor %}],
                  datasets: [{
                      label: "# of Procedures",
                      data: [{% for j in book_count %}
                               {{ j }},
                             {% endfor %}],
                      backgroundColor: [
                          'rgba(255, 99, 132, 0.2)',
                          'rgba(255, 99, 132, 0.2)',
                          'rgba(54, 162, 235, 0.2)',
                          'rgba(255, 206, 86, 0.2)',
                          'rgba(75, 192, 192, 0.2)',
                          'rgba(153, 102, 255, 0.2)',
                          'rgba(255, 159, 64, 0.2)'
                      ],
                      borderColor: [
                          'rgba(255,99,132,1)',
                          'rgba(255,99,132,1)',
                          'rgba(54, 162, 235, 1)',
                          'rgba(255, 206, 86, 1)',
                          'rgba(75, 192, 192, 1)',
                          'rgba(153, 102, 255, 1)',
                          'rgba(255, 159, 64, 1)'
                      ],
                      borderWidth: 1
                  }]
              }
          })
      },
      error: function(error_data){
          console.log("error")
          console.log(error_data)
      },
  })
  </script>
  {% endblock %}
海图

class ChartView(LoginRequiredMixin, TemplateView):
template_name = 'Book/chart.html'

def get_context_data(self, **kwargs):
    context = super(ChartView, self).get_context_data(**kwargs)
    book = Author.objects.filter(id__in=self.request.user.userprofile.author.all()).order_by('id')
    books_count = [ Book.objects.filter(author=cls).count() for cls in book ]
    context['book'] = book
    context['book_count'] = books_count
    return context
我的最后一件事是找出如何获取书籍的名称,而不是通过这行代码获取的外键ID:

       labels: [{% for i in book %}{{ i.id }},{% endfor %}],

即使我使用I.name或I.book\u name或我能想到的任何东西,似乎也无法访问该名称。在进一步搜索之后,我相信我需要对名称进行某种类型的反向查找,仍然在尝试多种方法。提前感谢您的帮助。

要引用的字段名称应该在“models.py”文件中定义-不清楚您是否确信已经定义了i.name或i.book\u名称,或者您是否在猜测。它是数据库中源表中的列名。如果它实际上是b_的名字或头衔或什么的,你需要特别使用它

另一件事是,您可能需要在标签列表中的字符串周围加引号,如果引号分隔的字符串中存在任何可能导致问题的特殊字符,则可能需要内置模板标记“”

因此,请尝试以下内容(标题只是我的猜测):


我成功了!我知道这个名字,但就是没法把它传过来。做这个简单的改变就成功了!非常感谢!!!!!!不需要escapejs。
       labels: [{% for i in book %}{{ i.id }},{% endfor %}],
labels: [{% for i in book %}'{{ i.title|escapejs }}',{% endfor %}]