0

我有 3 个模型:

Book,TopiccenterEntryBook.

这些是模型定义:

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")

现在我在主题中心T。我搜索书籍并获取数据库中的所有书籍。如您所见,每本书都可以位于多个主题中心。

我想要做的是,在搜索结果中,我想显示每本书是否包含在当前 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 %}

但问题是一本书在两个主题中心和模板中我都得到了already in this Topiccenteradd to this topiccenter这是无意义的。我如何修复我的逻辑,以便我可以检查此当前主题中心中的书,如果没有,请显示add按钮

谢谢

4

1 回答 1

2

了解如何将其移动到视图中。在这种情况下,获取与 关联的所有书籍并将其tc发送到上下文中。

现在,模板逻辑将是:

{% for book in books %}
  {% if book in tc_books %}
    already in this Topiccenter
  {% else %}
      add to this topiccenter
  {% endif %}
{% endfor %}

哪里(在视图中)

tc_books = Books.objects.filter(b_entries__topiccenter = tc)

并在上下文中发送

于 2013-11-13T17:42:30.703 回答