1

次のようなモデルがいくつかあります。

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

# ...

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

Bookがお気に入りに登録された回数を確認するにはどうすればよいですか?

4

2 に答える 2

3

ORMを使用して「スルー」テーブルを直接クエリできます。

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

DB の M2M テーブルの名前に置き換える必要がありますappname_*が、次のようにすることができます。

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 に答える