Obtaining field name in template

421 views
Skip to first unread message

Axel Rau

unread,
Nov 12, 2012, 4:51:45 PM11/12/12
to django...@googlegroups.com
1st trial with generic views:

url.py:
url(r'^account/(?P<pk>\d+)/$', AccountDetailView.as_view(), name='account-detail'),

views.py:
class AccountDetailView(DetailView):
model = Account

In the template, I get the data so:
object.field
But how do I get the field name (model.field.verbose_name)?

Axel
---
PGP-Key:29E99DD6 ☀ +49 151 2300 9283 ☀ computing @ chaos claudius

Lachlan Musicman

unread,
Nov 12, 2012, 4:59:43 PM11/12/12
to django...@googlegroups.com
On Tue, Nov 13, 2012 at 9:51 AM, Axel Rau <Axel...@chaos1.de> wrote:
> 1st trial with generic views:
>
> url.py:
> url(r'^account/(?P<pk>\d+)/$', AccountDetailView.as_view(), name='account-detail'),
>
> views.py:
> class AccountDetailView(DetailView):
> model = Account
>
> In the template, I get the data so:
> object.field
> But how do I get the field name (model.field.verbose_name)?

I think the easiest way I've seen is to use _meta like thus:

http://stackoverflow.com/questions/3647805/get-models-fields-in-django

cheers
L.

--
...we look at the present day through a rear-view mirror. This is
something Marshall McLuhan said back in the Sixties, when the world
was in the grip of authentic-seeming future narratives. He said, “We
look at the present through a rear-view mirror. We march backwards
into the future.”

http://www.warrenellis.com/?p=14314

Axel Rau

unread,
Nov 13, 2012, 8:23:00 AM11/13/12
to django...@googlegroups.com
Am 12.11.2012 um 22:59 schrieb Lachlan Musicman:

> On Tue, Nov 13, 2012 at 9:51 AM, Axel Rau <Axel...@chaos1.de> wrote:
>> 1st trial with generic views:
>>
>> url.py:
>> url(r'^account/(?P<pk>\d+)/$', AccountDetailView.as_view(), name='account-detail'),
>>
>> views.py:
>> class AccountDetailView(DetailView):
>> model = Account
>>
>> In the template, I get the data so:
>> object.field
>> But how do I get the field name (model.field.verbose_name)?
>
> I think the easiest way I've seen is to use _meta like thus:
>
> http://stackoverflow.com/questions/3647805/get-models-fields-in-django
Thanks for the pointers, but none of them shows how to access the field meta out of a template from a single query result object.
I can't call functions with arguments (fieldname) out of a template and I'm not in a loop context there.

Lachlan Musicman

unread,
Nov 13, 2012, 2:01:37 PM11/13/12
to django...@googlegroups.com
AH! If I remember correctly, I also asked about this when I started
using Django. There's a reason you can't call complex functions in the
template: code separation/DRY/etc.

If you want the data, get it in views.py and pass it to the template.
The heavy lifting should be done in the views.py (as functions) or
models.py (as class methods) and then passed into the template using
the context.

I was frustrated by this at first, but by the end I was a convert -
makes things much cleaner.
Reply all
Reply to author
Forward
0 new messages