[Django] #29992: Error in admin checking list_display items

5 views
Skip to first unread message

Django

unread,
Nov 28, 2018, 10:55:11 AM11/28/18
to django-...@googlegroups.com
#29992: Error in admin checking list_display items
-------------------------------------------+------------------------
Reporter: gtoffoli | Owner: nobody
Type: Bug | Status: new
Component: contrib.admin | Version: 2.1
Severity: Release blocker | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------------+------------------------
I'm porting my app from Django 1.8 and 2.0.6 to **Django 2.1.3**.
In the last environment, ''runserver'' emits a lot of system check issues
of type **admin.E108**
They refer to fields from different modules and many different classes,
but all of them are ''CharField'' or ''TextField''.

I see that method **_check_list_display_item** of class
''ModelAdminChecks'' in module ''check'' of ''django.contrib.admin'' has
changed significantly between releases 2.0.6 and 2.1.3; in the latter, has
been removed the last branch (else) of the top-level if-elif-else
structure, although it was explicitly stated, in a comment inside it, that
the associated path was required.

I'm not able to make a complete diagnosis, but it seems that testing

{{{
hasattr(model, item)
}}}

in general gives a different result than testing the existence of the same
field with

{{{
model._meta.get_field(item)
}}}

In fact, using the ''manage.py shell'' command, I experimentally verified
such difference on a subset of the fields presenting the above mentioned
problem: the ''hasattr'' test yields sometimes True and sometimes False
(don't know why), while the other way of testing the existence of the
field always yields a True result.

--
Ticket URL: <https://code.djangoproject.com/ticket/29992>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Nov 28, 2018, 11:17:19 AM11/28/18
to django-...@googlegroups.com
#29992: Error in admin checking list_display items
---------------------------------+--------------------------------------

Reporter: gtoffoli | Owner: nobody
Type: Bug | Status: new
Component: contrib.admin | Version: 2.1
Severity: Release blocker | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------

Comment (by Tim Graham):

Please give a minimal sample project that reproduces the issue.

--
Ticket URL: <https://code.djangoproject.com/ticket/29992#comment:1>

Django

unread,
Nov 28, 2018, 11:24:05 AM11/28/18
to django-...@googlegroups.com
#29992: Error in admin checking list_display items
---------------------------------+--------------------------------------

Reporter: gtoffoli | Owner: nobody
Type: Bug | Status: new
Component: contrib.admin | Version: 2.1
Severity: Release blocker | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------

Comment (by Tim Graham):

Check if #29636 explains the cause.

--
Ticket URL: <https://code.djangoproject.com/ticket/29992#comment:2>

Django

unread,
Nov 28, 2018, 6:28:51 PM11/28/18
to django-...@googlegroups.com
#29992: Error in admin checking list_display items
---------------------------------+--------------------------------------

Reporter: gtoffoli | Owner: nobody
Type: Bug | Status: new
Component: contrib.admin | Version: 2.1
Severity: Release blocker | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------

Comment (by gtoffoli):

In my view #29636 correctly identifies the commit at the origin of the
problem, but doesn't explain the cause.
My case is very similar but it involves only ''CharField'' and
''TextField'', not a field class I defined, nor, for example,
''IntegerField''.
And, as far as I can understand, these field classes haven't the
''__get__'' method at all.

An excerpt of my code follows


{{{
@python_2_unicode_compatible
class Repo(models.Model):
name = models.CharField(max_length=255, db_index=True,
verbose_name=_('name'))
description = models.TextField(blank=True, null=True,
verbose_name=_('short description'))
state = models.IntegerField(choices=PUBLICATION_STATE_CHOICES,
default=DRAFT, null=True, verbose_name='publication state')
...
}}}

{{{
class RepoAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'slug', 'description', 'repo_type',
'state', 'user_fullname', 'created', 'modified',)
...

}}}

and this is an excerpt of the error log:


{{{
<class 'commons.admin.RepoAdmin'>: (admin.E108) The value of
'list_display[1]' refers to 'name', which is not a callable, an attribute
of 'RepoAdmin', or an attribute or method on 'commons.Repo'.
<class 'commons.admin.RepoAdmin'>: (admin.E108) The value of
'list_display[3]' refers to 'description', which is not a callable, an
attribute of 'RepoAdmin', or an attribute or method on 'commons.Repo'.

}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/29992#comment:3>

Django

unread,
Nov 28, 2018, 7:17:27 PM11/28/18
to django-...@googlegroups.com
#29992: Error in admin checking list_display items
---------------------------------+--------------------------------------

Reporter: gtoffoli | Owner: nobody
Type: Bug | Status: new
Component: contrib.admin | Version: 2.1
Severity: Release blocker | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------

Comment (by Tim Graham):

I don't get a check error with the excerpt you provided. Please provide a
minimal project that demonstrates the issue.

--
Ticket URL: <https://code.djangoproject.com/ticket/29992#comment:4>

Django

unread,
Nov 29, 2018, 3:49:24 AM11/29/18
to django-...@googlegroups.com
#29992: Error in admin checking list_display items
---------------------------------+--------------------------------------

Reporter: gtoffoli | Owner: nobody
Type: Bug | Status: new
Component: contrib.admin | Version: 2.1
Severity: Release blocker | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------

Comment (by gtoffoli):

You are right. I created a new project for testing, starting with that
excerpt; then added some more stuff, without being able to reproduce the
problem.
I don't know what, in the real project, interferes with the creation of
admin classes. When I can, I'll keep adding stuff to the test project.
For the moment I will use a patched version of the admin.check module.

--
Ticket URL: <https://code.djangoproject.com/ticket/29992#comment:5>

Django

unread,
Nov 29, 2018, 8:08:53 AM11/29/18
to django-...@googlegroups.com
#29992: Error in admin checking list_display items
----------------------------------+--------------------------------------
Reporter: Giovanni Toffoli | Owner: nobody
Type: Bug | Status: closed
Component: contrib.admin | Version: 2.1
Severity: Release blocker | Resolution: needsinfo

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------+--------------------------------------
Changes (by Tim Graham):

* status: new => closed
* resolution: => needsinfo


--
Ticket URL: <https://code.djangoproject.com/ticket/29992#comment:6>

Reply all
Reply to author
Forward
0 new messages