Opened 14 years ago
Closed 13 years ago
#15221 closed Bug (fixed)
Show field's verbose name instead of related model name for M2M filterspecs
Reported by: | Julien Phalip | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 1.2 |
Severity: | Normal | Keywords: | |
Cc: | Simon Charette | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | yes |
Easy pickings: | no | UI/UX: | yes |
Description
Consider the following example:
Model:
from django.db import models from django.contrib.auth.models import User class Book(models.Model): title = models.CharField(max_length=25) year = models.PositiveIntegerField(null=True, blank=True) author = models.ForeignKey(User, related_name='books_authored', blank=True, null=True) contributors = models.ManyToManyField(User, related_name='books_contributed', blank=True, null=True)
Admin:
from django.contrib import admin from .models import Book class BookAdmin(admin.ModelAdmin): list_display = ('title', 'year', 'author') list_filter = ('year', 'author', 'contributors') admin.site.register(Book, BookAdmin)
Presumably since #3400 was fixed, M2M filterspecs are using the related model's name as title. This leads the example above to display "By user" instead of "By contributors". This is a bit silly in itself but it could be even more problematic if multiple M2M filters to User were specified at the same time.
I've discussed this with DrMeers (who wrote the patch for #3400). The patch I'm attaching seems to fix the issue but we might have to investigate a bit more to see if there are cases where it wouldn't make sense to show the field's verbose name for a M2M.
The patch doesn't contain tests yet. I'm waiting to get feedback on the latest patch I've posted in #8528 which introduces a new module for filterspecs' tests. If #8529 gets checked in then writing tests for this patch will be trivial.
Attachments (3)
Change History (16)
by , 14 years ago
Attachment: | 15221_m2m_filterspec_title.diff added |
---|
comment:1 by , 14 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 14 years ago
Needs tests: | set |
---|
comment:5 by , 14 years ago
Cc: | added |
---|
comment:6 by , 14 years ago
Severity: | → Normal |
---|---|
Type: | → Bug |
comment:7 by , 14 years ago
Easy pickings: | unset |
---|---|
Patch needs improvement: | set |
15221_m2m_filterspec_title.2.diff fails to apply cleanly on to trunk
by , 14 years ago
Attachment: | 15221_m2m_filterspec_title.3.diff added |
---|
updated patch to match up against trunk
comment:8 by , 14 years ago
Oh, you beat me to it. Thanks for updating the patch! ;-)
So yeah, this is related to #15971.
comment:9 by , 14 years ago
UI/UX: | set |
---|
comment:11 by , 13 years ago
Here is a workaround to this problem:
http://stackoverflow.com/questions/7199922/django-admin-filter-verbose-name-on-listing-page/
I hope that can be useful to someone.
Yes, this problem exists, but no, it isn't related (directly) #3400 specific -- the same problem exists in 1.2.X.