我有一些看起来像这样的模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
favorite_books = models.ManyToManyField(Book)
# ...
class Book(models.Model):
title = models.CharField(max_length=255)
如何知道 aBook
被收藏了多少次?
我有一些看起来像这样的模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
favorite_books = models.ManyToManyField(Book)
# ...
class Book(models.Model):
title = models.CharField(max_length=255)
如何知道 aBook
被收藏了多少次?
您可以直接使用 ORM查询“通过”表:
UserProfile.favorite_books.through.objects.filter(book_id=book.id).count()
您需要替换appname_*
为数据库中 M2M 表的名称,但您可以执行以下操作:
from django.db import connections
cursor = connections['default'].cursor()
cursor.execute("""
SELECT count(*) FROM appname_userprofile_books
WHERE book_id = {book_id};
""".format(book_id=book_id))
favorited_count_list = cursor.fetchall()
然后,您可以从中提取号码favorited_count_list
。