【问题标题】:Return multiple models from a view in Django从 Django 中的视图返回多个模型
【发布时间】:2016-04-20 06:46:09
【问题描述】:

我正在学习 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 模型。谁能指出我正确的方向?

【问题讨论】:

  • 你不能,get queryset应该做一件事,那就是返回one queryset。你到底想做什么?显示目的地轨迹或显示所有两个模型? (都有据可查)
  • 我有一个选择按钮,我在其中选择了目的地,然后在我的代码中,我想检索与目的地 id 链接的轨迹。我在想,如果我可以返回两个模型,我可以遍历第二组(轨迹)中的数据,并在它等于选择值时保存在一个 javascript 数组中。

标签: django django-models django-views


【解决方案1】:

我可以遍历第二组(轨迹)中的数据,并在它等于选择值时保存在 javascript 数组中。

可以,但这太糟糕了,你只是敞开心扉让客户修改他们真正不需要的东西。

对于每个 django 多对 x 关系,您可以找到与 _set 相关的所有对象,因此只需保持初始 get_queryset 相同(返回目的地),然后获取每个对象的轨迹。

{% for roadtrip in roadtrip_list %}
    {% for trajectory in roadtrip.trajectories_set.all %}
          {# Use trajectories #}
    {% endfor %}
    {{ roadtrip.roadtripname }} 
{% endfor %}

*我知道可以在此处进行非常简单的优化以提高性能,但我故意不包括它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2023-04-03
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多