1
class Model1(models.Model):
    a1 = models.CharField()

class Model2(models.Model):
    a2 = models.CharField()
    model1 = ForeignKey(Model1)

私はこのようなことをしたい

#views.py

def action(request):
    model1_instances = Model1.objects.all()
    render_to_respose('action.html', 'model1_instances': model1_instances, context_instance=RequestContext(request)

私がやりたいことは;

action.html に渡される「model1_instances」オブジェクトごとに、対応する Model2 オブジェクトが必要です。

を使用しmodel2_instance = model1_instances.model2_set.all()てみましたが、望ましい結果が得られませんでした。おそらく、model1_instances がデータベース内のすべての Model1 オブジェクトを返すためです。

私が知っていること

次のようなものを使用すると;

model1_instance = Model1.objects.get(pk=1)

対応するものを取得するのは非常に簡単です

model2_instance = model1_instance.model2_set.all().

私はこれをすでに知っていますが、それは探しているものではありません。

いくつかの手がかりが必要です。

解決

皆様の貢献に感謝いたします。この [API]: https://github.com/japsu/django-selectreverseに出くわし、それを利用することにしました。「車輪を再発明する必要はない」ということわざがあるように。それはうまくいき、実際に多くの頭痛を軽減し、今では他のことに注意を向けることができます.

4

3 に答える 3

1

あなたが求めている答えは別のスレッドで答えられたと思います。

Djangoで関連する値を取得するためのベストプラクティス

私の頭のてっぺんから(テストされていない)、次のようなことを試してください:

model2_instance = Model2.objects.filter(model1__pk=1) 
于 2013-03-06T13:56:53.340 に答える
0

Model1 のインスタンスを取得します。

model1 = Model1.objects.get(pk=1)

次に、FK で参照した Model2 のインスタンスを取得するには、次のようにします。

model2 = model1.Model2_set.all()

これにより、Model1 のインスタンスを参照するすべての Model2 インスタンスのセットが返されます。

これに関する情報は、後方関連オブジェクトから入手しました。

編集: ビューではなく、テンプレートで関連する Model2 インスタンスを取得します。

{% for model1 in model1_instances %}
    {% for model2 in model1.Model2_set.all %}
    {{ model2 }}
    {% endfor %}
{% endfor %}
于 2013-03-06T14:17:34.070 に答える
0

皆様の貢献に感謝いたします。この [API]: https://github.com/japsu/django-selectreverseに出くわし、それを利用することにしました。「車輪を再発明する必要はない」ということわざがあるように。それはうまくいき、実際に多くの頭痛を軽減し、今では他のことに注意を向けることができます.

于 2013-03-07T10:18:36.333 に答える