Opened 18 years ago
Closed 18 years ago
#3287 closed enhancement (fixed)
[patch] Model methods in the change list can have checkmark icons by decorating with boolean=True
Reported by: | Owned by: | Adrian Holovaty | |
---|---|---|---|
Component: | contrib.admin | Version: | |
Severity: | normal | Keywords: | admin, list_display, boolean, checkmarks |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Model methods that return true or false show up as 'True' or 'False' in the admin if you put them in the list_display. Which isn't anywhere near as nice as the checkmark icons that BooleanFields get. If you want to get them yourself you have to do this:
def is_current(self): from django.conf import settings current = self.start_date <= datetime.now() and self.end_date >= datetime.now() BOOLEAN_MAPPING = {True: 'yes', False: 'no', None: 'unknown'} result_repr = '<img src="%simg/admin/icon-%s.gif" alt="%s" />' % (settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[current], current) return result_repr is_current.allow_tags = True
Which is messy and brittle.
This patch lets you simply decorate the method with boolean=True and it works just like a booleanField
def is_current(self): return self.start_date <= datetime.now() and self.end_date >= datetime.now() is_current.boolean = True
This is my first patch, so please look it over and advise if there is any way the styling could be improved to be more pythonic, or more djangonic. :)
I couldn't find any current tests that cover items_for_result() so I wasn't sure how to add tests for this. I'm pretty sure I could add to an existing test set, but am unsure how to go about creating a full new one.
That said, the change is pretty trivial.
Attachments (2)
Change History (3)
by , 18 years ago
Attachment: | add_admin_boolean_checkmarks_to_callables.diff added |
---|
by , 18 years ago
Attachment: | admin_boolean_docs.diff added |
---|
comment:1 by , 18 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
diff to add boolean=True info to the model creation docs