django计算用户书架中不同种类书籍的数量并排序的代码实现
时间: 2023-05-30 19:07:17 浏览: 74
假设有如下模型类:
```python
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
genre = models.CharField(max_length=50)
class Bookshelf(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
date_added = models.DateTimeField(auto_now_add=True)
```
我们可以使用如下代码计算每个用户书架中不同种类书籍的数量并按照数量排序:
```python
from django.db.models import Count
# 获取用户书架中不同种类书籍的数量并排序
book_counts = Bookshelf.objects.filter(user=user).values('book__genre').annotate(count=Count('book__genre')).order_by('-count')
```
其中,`user` 是指定的用户对象,`book_counts` 是一个 QuerySet 对象,它包含每个书籍类型的数量和书籍类型的名称。可以通过循环遍历来访问每个书籍类型和数量:
```python
for book_count in book_counts:
print(book_count['book__genre'], book_count['count'])
```
这将输出每种书籍类型的名称和数量。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)