Форум сайта python.su
Как бы вот пройтись for'ом по полям всей строчки в таблице.
Например есть стандартная модель User. Хочу сделать страничку где будут отображаться данные пользователя. Хотелось бы в таком виде
Имя: {{ user.first_name }}
Ник: {{ user.username }}
Но только вот во-превых хочу показывать только те поля в которых заполнены данные, а во вторых неохото для каждого поля создавать div в темплейте. Поэтому ищу путь что то в стиле
{% for i in user %}
<div class=“a”>{{ word }}: </div><div class=“b”>user.{{ fieldname }}</div>
{% endfor %}
где word например будет лист из в стиле
ну а fieldname это имя поля в модели User
Я понимаю что привёл не реальный пример, но так что бы народ понял чего мне надо получить я думаю он подойдёт.
Офлайн
Тебе надо список полей возвращать самому. Проще всего медалть у модели метод, в ктором и возвращать все поля в нужном порядке.
Офлайн
Daevaorn, а можешь привести пример как в классе создать метод и вызвать его? А то что то в документации непонятно это дело описано.. Может какой простенький примерчик у тебя есть?
Офлайн
offlineВообще идеология джанги подразумевает что работая на уровне тимплейта, програмер не должен вызывать методы.
Daevaorn, а можешь привести пример как в классе создать метод и вызвать его? А то что то в документации непонятно это дело описано.. Может какой простенький примерчик у тебя есть?
Отредактировано (Сен. 16, 2007 13:32:06)
Офлайн
denzесли учесть что обращение к FоreignKey полю объекта уже вызов метода, то какая-то странная идеология. да, парметры в методы нельзя передавать, но етоды вызывать можно и нужно. раньше, да и сейчас очень большой популярностью в шаблонах пользуется метод get_absolute_url :)
Вообще идеология джанги подразумевает что работая на уровне тимплейта, програмер не должен вызывать методы.
Офлайн
offlineздесь вроде всё понятно http://www.djangoproject.com/documentation/model-api/#id8 . Модель ведь обычной python класс следовательно и методы в нем объявлются так же.
а можешь привести пример как в классе создать метод и вызвать его? А то что то в документации непонятно это дело описано.. Может какой простенький примерчик у тебя есть?
class MyModel(models.Model): #.... def get_fields(self): fields = [ field.name for field in MyModel._meta.fields ] for field in fields: yield field, getattr( self, field )
Отредактировано (Сен. 16, 2007 21:02:45)
Офлайн
fields = [ field.name for field in MyModel._meta.fields ]
for field in fields:
for field in MyModel._meta.fields:
Офлайн
nssпотому что автору нужны поля и их значения, а не только сами объекты полей, которые значения не хранят и существуют одни на все инстансы модели.
Почему б не просто:
Офлайн