Merge pull request #245 from mvantellingen/feature/fix-django-1.8-issue
Handle retrieving field.verbose_name in a Django 1.8 compat way
This commit is contained in:
commit
31743f19a2
|
@ -5,6 +5,7 @@ from itertools import islice
|
|||
import warnings
|
||||
|
||||
from django.db.models.fields import FieldDoesNotExist
|
||||
from django import VERSION as django_version
|
||||
import six
|
||||
|
||||
from django_tables2.templatetags.django_tables2 import title
|
||||
|
@ -465,8 +466,13 @@ class BoundColumn(object):
|
|||
parts = self.accessor.split('.')
|
||||
field = None
|
||||
for part in parts:
|
||||
|
||||
try:
|
||||
field = model._meta.get_field(part)
|
||||
if django_version < (1, 8, 0):
|
||||
field, _, _, _ = model._meta.get_field_by_name(part)
|
||||
else:
|
||||
field = model._meta.get_field(part)
|
||||
|
||||
except FieldDoesNotExist:
|
||||
break
|
||||
if hasattr(field, 'rel') and hasattr(field.rel, 'to'):
|
||||
|
@ -474,7 +480,10 @@ class BoundColumn(object):
|
|||
continue
|
||||
break
|
||||
if field:
|
||||
name = field.verbose_name
|
||||
if hasattr(field, 'field'):
|
||||
name = field.field.verbose_name
|
||||
else:
|
||||
name = field.verbose_name
|
||||
return name
|
||||
|
||||
@property
|
||||
|
|
|
@ -54,6 +54,11 @@ class Region(models.Model):
|
|||
return self.name
|
||||
|
||||
|
||||
class PersonInformation(models.Model):
|
||||
person = models.ForeignKey(
|
||||
Person, related_name='info_list', verbose_name='Information')
|
||||
|
||||
|
||||
# -- haystack -----------------------------------------------------------------
|
||||
|
||||
if not six.PY3: # Haystack isn't compatible with Python 3
|
||||
|
|
|
@ -4,6 +4,7 @@ from __future__ import unicode_literals
|
|||
|
||||
from django.utils.translation import ugettext_lazy
|
||||
from django.utils.safestring import mark_safe, SafeData
|
||||
import pytest
|
||||
|
||||
import django_tables2 as tables
|
||||
from ..app.models import Person
|
||||
|
@ -51,6 +52,17 @@ def test_should_support_safe_verbose_name_via_model():
|
|||
assert isinstance(table.columns["safe"].header, SafeData)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_handle_verbose_name_of_many2onerel():
|
||||
|
||||
class Table(tables.Table):
|
||||
count = tables.Column(accessor='info_list.count')
|
||||
|
||||
Person.objects.create(first_name='bradley', last_name='ayers')
|
||||
table = Table(Person.objects.all())
|
||||
assert table.columns['count'].verbose_name == 'Information'
|
||||
|
||||
|
||||
def test_sortable_backwards_compatibility():
|
||||
# Table.Meta.sortable (not set)
|
||||
class SimpleTable(tables.Table):
|
||||
|
|
Loading…
Reference in New Issue