我正在学习Django,
我遇到了从具有相同视图的2个不同模型中获取数据的问题。
我的模型如下:
@python_2_unicode_compatible
class Destination(models.Model):
roadtripname = models.CharField(max_length=100)
def __str__(self):
self.roadtripname
@python_2_unicode_compatible
class Trajectories(models.Model):
roadtripname = models.ForeignKey(Destination, on_delete=models.CASCADE)
place_text = models.CharField(max_length=100)
def __str__(self):
return self.place_text
我的观点类是:
class IndexView(generic.ListView):
template_name = 'roadtrip/index.html'
context_object_name = 'roadtrip_list'
def get_queryset(self):
return Destination.objects.filter()
我的HTML是:
{% for roadtrip in roadtrip_list %}
{{ roadtrip.roadtripname }}
{% endfor %}
我试图像这样返回我的2个模型:
return Destination.objects.filter(), Trajectories.objects.filter()
然后在html中执行
{% for roadtrip in roadtrip_list[0] %}
{{ roadtrip.roadtripname }}
{% endfor %}
但这不起作用,我不知道如何能够访问Destination和Trajectories模型。有人能指出我正确的方向吗?
答案 0 :(得分:2)
我可以循环浏览第二组数据(轨迹)并保存在javascript数组中,当它等于选择值时。
你可以,但这太可怕了,你只是打开自己,允许客户修改他们真正不需要的东西。
对于每个django多对多关系,你可以找到与_set
相关的所有对象,所以只需保持你的初始get_queryset
相同(返回目的地),然后获得每个对象的轨迹。
{% for roadtrip in roadtrip_list %}
{% for trajectory in roadtrip.trajectories_set.all %}
{# Use trajectories #}
{% endfor %}
{{ roadtrip.roadtripname }}
{% endfor %}
*我知道可以在这里进行非常简单的优化以提高性能,但我故意不包括它们 子>