Skip to content

fix: Handle unhashable BooleanField representation value#9973

Open
emfpdlzj wants to merge 1 commit into
encode:mainfrom
emfpdlzj:fix/booleanfield-unhashable-representation
Open

fix: Handle unhashable BooleanField representation value#9973
emfpdlzj wants to merge 1 commit into
encode:mainfrom
emfpdlzj:fix/booleanfield-unhashable-representation

Conversation

@emfpdlzj
Copy link
Copy Markdown

This is a small consistency fix for BooleanField.to_representation(), matching the existing TypeError handling used by to_internal_value() while preserving the existing bool(value) fallback.

Summary

BooleanField.to_representation() now handles unhashable values consistently with to_internal_value().

Previously, values like [], {}, or set() could raise TypeError during membership checks before reaching the existing bool(value) fallback. This change suppresses TypeError around the explicit true/false/null token checks, allowing unrecognized unhashable values to be represented by their truthiness.

Test

  • Added BooleanField representation coverage for empty and non-empty unhashable collection values.
  • Ran:
    uv run --no-project --with 'django==5.2.*' --with 'pytest==9.*' --with pytest-django --with dj-database-url --with importlib-metadata --with pytz -m pytest tests/test_fields.py -k BooleanField

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant