Django ORM и шаблоны, как мне просмотреть все переменные, доступные для данного QuerySet? - PullRequest
0 голосов
/ 13 февраля 2011

У меня всегда возникают проблемы при попытке выяснить, какие имена переменных доступны для использования в шаблоне.Мне интересно, есть ли что-то в оболочке, что я могу сделать, чтобы распечатать все доступные объекты.

Скажем, например, у вас есть две модели:

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()

В оболочке я делаюp = Foo1.objects.all() Так что теперь p - это QuerySet всех значений, которые содержатся в Foo1 и Foo2 (из-за взаимосвязи).

Теперь в моем шаблоне, чтобы извлечь все эти данные, я обычно делал бы что-то вроде этого:

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

Прямо сейчас я просто предполагаю, что синтаксис переменной для использования равен i.id, i.foo2.id и i.foo2.foo3, но для более сложных QuerySet это не всегда просто.Есть ли способ вывести все доступные переменные QuerySet и их имена?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Не нужно догадываться.Вы должны быть в состоянии узнать из кода самих моделей.

Если по какой-то странной причине у вас нет доступа к коду - и я не могу себе представить, почему - вы всегда можете использовать интерактивную оболочку - импортировать свои модели туда, выполнить запрос, а затем dir(my_obj) чтобы найти список всех атрибутов my_obj.

0 голосов
/ 13 февраля 2011

Вы должны использовать:

Foo.objects.values_list()

в представлении и передавать объект как список, а не как queryset.

Также проверьте:

Foo.objects.values()
...