繁体   English   中英

Django 模板。 如何为 QuerySet 中的每个元素的特定键创建值列表

[英]Django-template. How to create list of values for specific key for each element in QuerySet

我通过上下文将所有对象发送到 html:

视图.py

def books(request):

    all_books = Book.objects.all()
    context = {'books': all_books}

    return render(request, 'books/books.html', context)

模型.py

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=30)
    category = models.IntegerField()
    offset_pages = models.IntegerField()
    read_pages = models.IntegerField()
    total_pages = models.IntegerField()
    book_path = models.CharField(max_length=200, default='')
    status = models.BooleanField(default=False)

    def __str__(self):
        return f'{self.category} | {self.title} | {self.author}'

这是否可以获取 django 模板中特定键的所有值的列表?

我想要一个包含 QuerySet 中每个元素的所有 read_pages 值的列表。

我相信我也可以通过上下文来做到这一点,但似乎必须有更好的方法。

我需要一个列表,因为我想稍后将它发送到 chart.js。

如果你想在 Javascript 中使用它,最好的办法是在视图中将查询集转换为 JSON:

from django.core import serializers

def books(request):

    all_books = Book.objects.all()
    serialized_books = serializers.serialize('json', [ all_books, ])
    context = {'books': all_books, 'books_json': serialized_books}

    return render(request, 'books/books.html', context)

然后你可以将serialized_books传递给 Django 模板中的 Javascript,如下所示:

<script>
    var books_serialized='{{ books_json | safe }}';
</script>

然后,您可以在 Javascript 文件中获取对象并获取任何属性:

let books = JSON.parse(books_serialized)
Object.keys(books[0]).forEach(function(key) {
    if(key==="fields"){
        console.log(books[key]["read_pages"]);
    }   
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM