jazzband/django-model-utils

Django 5.0: Choices not working

MiltosD opened this issue · 1 comments

Problem

In Django 5.0 field choices seem to be always lists, even when defined as Choices. In Django 4.3.9 it seems to be working as expected.

Environment

  • Django Model Utils version: 4.5.0
  • Django version: 5.0
  • Python version: 3.10
  • Other libraries used, if any:

Code examples

from model_utils import Choices

class MyClass
	my_field = models.CharField(
		   choices=Choices(("M", "Male", "MALE"), ("F", "Female", "FEMALE"))
	)

Django 4.2.11

from models import MyModel
type(MyModel._meta.get_field("my_field").choices)
<class 'model_utils.choices.Choices'>
MyModel._meta.get_field("my_field").choices
Choices(("M", "Male", "MALE"), ("F", "Female", "FEMALE"))

Django 5.0

from models import MyModel
type(MyModel._meta.get_field("my_field").choices)
<class 'list'>
MyModel._meta.get_field("my_field").choices
[("M", "MALE"), ("F", "FEMALE")]

This raises an error

TypeError: list indices must be integers or slices, not str

when trying to

MyModel._meta.get_field("my_field").choices["M"]

Can you provide a PR with a failing testcase?