Python 外键-如何在模板中解决此问题-django
我有3种型号:Python 外键-如何在模板中解决此问题-django,python,django,django-templates,Python,Django,Django Templates,我有3种型号: Book、Topiccenter和EntryBook 以下是模型定义: class Book(models.Model): title = models.TextField() language = models.TextField() class Topiccenter(models.Model): title = models.TextField(): description = models.TextField() class EntryBook(mod
Book
、Topiccenter
和EntryBook
以下是模型定义:
class Book(models.Model):
title = models.TextField()
language = models.TextField()
class Topiccenter(models.Model):
title = models.TextField():
description = models.TextField()
class EntryBook(models.Model):
book = models.ForeignKey(Book,related_name="b_entries")
topiccenter = models.ForeignKey(Topiccenter,related_name="tc_books")
现在我在TopiccenterT
。我搜索书籍并在数据库中获取所有书籍。如您所见,每本书可以位于多个主题中心
我想做的是,在搜索结果中,我想显示每本书是否包含在当前Topiccenter中:
我将把所有书籍books=Book.objects.all()
和当前主题中心设置为tc
,并将它们呈现到模板和模板中
{% for book in books %}
{% for entry in book.b_entries.all %}
{% if entry.topiccenter.id == tc.id %}
already in this Topiccenter
{% else %}
add to this topiccenter
{% endif %}
{% endfor %}
{% endfor %}
但问题是,一本书在两个主题中心,在模板中,我得到的已经在这个主题中心和添加到这个主题中心,这是没有意义的。如何修复我的逻辑,以便检查当前主题中心中的书籍是否存在,如果没有,则显示它们add
按钮
谢谢查看如何将其移动到视图中。在这种情况下,获取与tc
关联的所有书籍,并将其发送到上下文中
现在,模板逻辑将是:
{% for book in books %}
{% if book in tc_books %}
already in this Topiccenter
{% else %}
add to this topiccenter
{% endif %}
{% endfor %}
何处(视图中)
并将其发送到上下文中伟人,想知道我为什么没有想到这个主意:)谢谢,更快的办法是把主题中心的书和不在主题中心的书都拿出来:)@lcfseth,是的,你也是rihgt@icfseth-我同意你的看法,但是如果你只是想要一个长长的所有书籍的列表,带有添加/已经添加的选项,这在我看来是更好的选择
tc_books = Books.objects.filter(b_entries__topiccenter = tc)