Django 1.7
I have a model:
class Book(models.Model):
author = models.CharField(
'Автор',
max_length = 200,
blank = True
)
title = models.CharField(
'Заглавие',
max_length = 200
)
pub_year = models.IntegerField(
'Год издания',
max_length = 4,
choices = YEAR_CHOICES
)
In my views.py
I have:
from django.shortcuts import render, redirect, get_object_or_404
from django.views import generic
from books.models import Book
from forms import BookForm
class BookListView(generic.ListView):
model = Book
paginate_by = 25
I want to get verbose_name
s of Book model fields in template. In order to do it I have registered template tag (function code is from https://stackoverflow.com/a/2429094/2947812):
@register.filter
def verbose_name(value, arg):
return value._meta.get_field_by_name(arg)[0].verbose_name
and in template I use it this way:
{{ book|verbose_name:"title" }}
As I can tell, everything is made according to Django documentation on custom template tags and filters.
But instead of verbose_name value, I get 'str' object has no attribute '_meta' error
. I guess that it's because instead of Book object, something other is passed to verbose_name
function, but why?