我想以图表的形式表示我的数据, 但我在制作正确的查询以显示图表的标签和系列时遇到问题, 基本上我有一个Book模型和一个User模型 我想显示属于特定用户(标签)的书籍(系列)的数量。
class Book(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=200)
@register.simple_tag()
def chart_data():
users =
books =
return json.dumps({
'labels':[user.username for user in users],
'series':[[book.name for book in books]]
})
答案 0 :(得分:1)
这样的事情:
users = User.objects.all()
for user in users:
books = Book.objects.filter(user=user)
答案 1 :(得分:0)
如果您想为特定用户执行此操作,请执行以下操作:
series = Books.objects.filter(user = "username").values("name")
这将生成一个查询集:
<queryset: [{name: book1}, {name: book2}, ...]>
您可以将其转换为列表,如下所示:
list(series)
然后通过json.dumps发送它..
在上述情况下,您已经知道这些图书所属的用户,但是如果您想通过查询指定它,那么:
series = Books.objects.filter(user = "username").values("name", "user__username")
这会产生这样的结果:
<queryset: [{name: book1, user: username1}, {name: book2, user: username1}, ...]>
答案 2 :(得分:0)
如果我理解正确,你需要一个json数据,它应该有一个标签代表用户名和系列代表该特定用户的book.name。
你试过了吗?
books = Book.objects.values('user__username', 'name').order_by('user__username', 'name')