Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多对多关系中的复杂django查询_Python_Django_Django Models_Django Queryset - Fatal编程技术网

Python 多对多关系中的复杂django查询

Python 多对多关系中的复杂django查询,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,我有以下型号 class Book(models.Model): name = models.CharField(max_length=140) class UserProfile(models.Model): favorites = models.ManyToManyField(Book, null=True, blank=True) user = models.OneToOneField(User) 我需要列出所有书籍的清单,显

我有以下型号

class Book(models.Model):
    name        = models.CharField(max_length=140)

class UserProfile(models.Model):
    favorites    = models.ManyToManyField(Book, null=True, blank=True)
    user         = models.OneToOneField(User)
我需要列出所有书籍的清单,显示哪些是我最喜欢的,哪些不是

我需要一个查询集来查看所有像这样的书

Book.objects.all()
但我还需要知道每本书是否是该用户的最爱,然后将此查询集传递给模板


谢谢。

这是ManyToManyField的一个相对简单的用法

class Book(models.Model):
    name        = models.CharField(max_length=140)

class UserProfile(models.Model):
    favorites    = models.ManyToManyField(Book, null=True, blank=True)
    user         = models.OneToOneField(User)

favorite_books = this_user_profile.favorites.all()
for b in Book.objects.all():
    if b in favorite_books:
        print "Book", b.name, "is a favorite of this user!"
    else:
        print "Book", b.name, "is not a favorite of this user!"
ETA:既然你说要将它添加到模板中,那么就把它作为元组列表添加到模板中

book_list = [(b, (b in favorite_books)) for b in Book.objects.all()]
在模板中,输入代码

{% for book, is_favorite in book_list %}
    {% if is_favorite %}
        {% comment %} Do something with this favorite book {% endcomment %}
    {% else %}
        {% comment %} Do something with this non favorite book {% endcomment %}
    {% endif %}
{% endfor %}

谢谢也许我的问题不是很明确,但我需要将它传递给模板而不是打印,这就是我的问题所在。如何将此额外信息添加到查询集中?