0

私は3つのモデルを持っています:

BookTopiccenterおよび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")

今、私はトピックセンターにいTます。本を検索し、DB 内のすべての本を取得します。ご覧のとおり、各書籍は複数のトピック センターに存在する可能性があります。

私がやりたいことは、検索結果で、各本が現在のトピックセンターに含まれているかどうかを表示したいということです:

すべての本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 %}

しかし、問題は、1 つの本が 2 つのトピックセンターにあり、テンプレートで両方を取得していて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 に答える