1

我有一些看起来像这样的模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    favorite_books = models.ManyToManyField(Book)

# ...

class Book(models.Model):
    title = models.CharField(max_length=255)

如何知道 aBook被收藏了多少次?

4

2 回答 2

3

您可以直接使用 ORM查询“通过”表:

UserProfile.favorite_books.through.objects.filter(book_id=book.id).count()
于 2012-08-16T00:33:43.980 回答
0

您需要替换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

于 2012-08-16T00:28:39.447 回答