【问题标题】:Django ORM and templates, how do I view all of the variables available for a given QuerySet?Django ORM 和模板,如何查看给定 QuerySet 可用的所有变量?
【发布时间】:2011-02-13 11:58:22
【问题描述】:

我总是在试图找出可在模板中使用的变量名称时遇到问题。我想知道 shell 中是否有什么东西可以打印出所有可用的对象。

假设您有两个模型:

class Foo1(models.Model)
    id = models.Integer(primary_key=True)
    foo2 = models.ForeignKey(Foo2)

class Foo2(models.Model)
    id = models.Integer(primary_key=True)
    foo3 = models.Integer()

在 shell 中我执行p = Foo1.objects.all() 所以现在p 是一个包含Foo1Foo2 中所有值的查询集(由于关系)。

现在在我的模板中,为了提取所有这些数据,我通常会这样做:

{% for i in p %}
<p>{{ i.id }}</p>
<p>{{ i.foo2.id }}</p>
<p>{{ i.foo2.foo3 }}</p>
{% endfor %}

现在我只是猜测要使用的变量语法是i.idi.foo2.idi.foo2.foo3,但是对于更复杂的 QuerySet,这并不总是那么简单。有没有办法输出 QuerySet 的所有可用变量及其名称?

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    你应该使用:

    Foo.objects.values_list()
    

    在视图中并将对象作为列表而不是queryset 传递。

    也可以看看:

    Foo.objects.values()
    

    【讨论】:

    • Foo.objects.values() 看起来很有帮助。谢谢!
    【解决方案2】:

    无需猜测。您应该能够从模型本身的代码中找到。

    如果由于某些奇怪的原因您无法访问代码 - 我无法想象为什么 - 您始终可以使用交互式外壳 - 在那里导入您的模型,执行查询,然后执行 dir(my_obj) 查找my_obj 的所有属性列表。

    【讨论】:

      猜你喜欢
      • 2013-09-05
      • 2013-11-17
      • 1970-01-01
      • 2013-07-27
      • 2011-01-05
      • 2012-08-15
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多