Opened 9 years ago
Closed 9 years ago
#27239 closed Bug (duplicate)
Unexpected behavior on get_FIELDNAME_display when as int as value
| Reported by: | Levi Velázquez | Owned by: | nobody | 
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 1.10 | 
| Severity: | Normal | Keywords: | choice, field | 
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description
Let's say we have have  a choice field called gender and it has intengers as values.
    GENDER_CHOICES = (
        (1, _('Male')),
        (2, _('Female'))
    )
gender = models.CharField(choices=GENDER_CHOICES, null=True)
If we  create an instance with a gender as 1 or '1'  and then try to display gender field value using get_FIELDNAME_display method, we will get unwanted value.  We will get '1' and not 'Male' as it supposed to be. 
Model.instance.create(gender=1) instance.get_gender_display() >>>'1'
 
The correct response should be 
Model.instance.create(gender=1) instance.get_gender_display() >>>'Male'
Change History (3)
follow-up: 2 comment:1 by , 9 years ago
comment:2 by , 9 years ago
Replying to claudep:
Why would you use integer values for a CharField in the first place?
Because it's possible. If Django allows you to assign it, so, it should take care of that case. 
comment:3 by , 9 years ago
| Resolution: | → duplicate | 
|---|---|
| Status: | new → closed | 
Duplicate of #20749 which suggests to add a system check to prohibit using incorrect types in choices.
Why would you use integer values for a CharField in the first place?