2



私のDjango-Projectには、次のようなモデルがあります。

class Tag_car(models.Model):
    car = models.ForeignKey(Car)
    tag = models.ForeignKey(Tag)

carは ImageFieldtagの外部キーであり、TextField の外部キーです。

すべての車には複数のタグが付いています。これで、ユーザーはタグで特定の車を検索できるようになります。私は私の見解ではそのようにやっています:

…
search = request.POST.get('search')
cars = Tag_car.objects.filter(tag=search)
…
return render_to_response(page,context_instance=RequestContext(request, {'cars': cars}))

そして、私のテンプレートでは、すべての車を次のように表示しています:

{% for car in cars %}
    <img src="{{ MEDIA_URL }}{{ car.car }}">
{% endfor %}

それはすべて正常に動作します。
しかし、ここでは、テンプレートの for ループ内に、各車に関連するすべてのタグも表示したいと考えています。次のような{{ car.tag }}ことをすると、明らかに、ユーザーが検索していたタグが 1 つだけ取得されます。
各車のすべてのタグをビューに渡してから、各車に表示する方法に苦労しています。
誰もそれを行う方法を知っていますか?
私はあなたの助けに感謝します。

4

2 に答える 2

1

したがって、問題は、テンプレートに渡すオブジェクトcarsが実際にはTag_carオブジェクトのリストであることです。したがって、各車に関連する他のタグのリストを取得するには、車との関係をたどってから、他のタグをクエリする必要があります。

{% for car in cars %}
    ...
    {% for tag in car.car.tag_set.all %}
        ...
    {% endif %}
{% endif %}

ただし、Tag_cars ではなく、最初に Car オブジェクトをクエリする必要があることに注意してください。さらに、Tag_car モデルは実際には多対多リレーションシップのスルー テーブルであるため、明示的に作成するのではなく、Car モデルで M2M フィールドを使用できます。

tags = models.ManyToManyField(Tag)
于 2013-08-27T14:23:16.307 に答える