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)
尝试使用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我决定使用它。就像俗话说的那样“没有必要重新发明轮子”。它起作用,实际上让我很头疼,现在我可以将注意力集中在其他方面了。
答案 0 :(得分:1)
我认为您所追求的答案已在另一个主题中得到解答。
Best practice to get related values in Django
虽然离开我的头顶(未经测试),尝试这样的事情:
model2_instance = Model2.objects.filter(model1__pk=1)
答案 1 :(得分: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 %}
答案 2 :(得分:0)
谢谢大家的贡献。我偶然发现了这个[API]:https://github.com/japsu/django-selectreverse我决定使用它。就像俗话说的那样“没有必要重新发明轮子”。它起作用,实际上让我很头疼,现在我可以将注意力集中在别的东西上。