Skip to content

Fix ValidationError on BooleanField with None value#27

Merged
craigds merged 1 commit intomasterfrom
cds-fix-boolean-validation-error
Dec 25, 2025
Merged

Fix ValidationError on BooleanField with None value#27
craigds merged 1 commit intomasterfrom
cds-fix-boolean-validation-error

Conversation

@craigds
Copy link
Owner

@craigds craigds commented Dec 25, 2025

Fixes #13

Summary

  • Catch ValidationError during field change detection
  • Skip invalid fields (like deferred fields)
  • Add tests for BooleanField with None value

Details

When models with non-nullable BooleanField are instantiated with None values (as Django admin does), field.to_python() raises ValidationError. This wraps the call in try-except to skip invalid fields during change detection, similar to how deferred fields are handled.

Test Plan

  • All 16 tests pass
  • Ruff linting passes
  • Mypy type checking passes

Created with Claude Code

BooleanField.to_python(None) raises ValidationError. Skip fields that
raise ValidationError during change detection, treating them like
deferred fields. This prevents crashes during admin instantiation of
models with non-nullable BooleanFields.

Fixes #13
@craigds craigds marked this pull request as ready for review December 25, 2025 04:04
Copilot AI review requested due to automatic review settings December 25, 2025 04:04
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a crash that occurs when Django models with non-nullable BooleanFields are instantiated with None values, which commonly happens in Django admin forms before user input. The fix wraps the field.to_python() call in a try-except block to gracefully handle ValidationError exceptions by skipping invalid fields during change detection.

  • Adds exception handling for ValidationError in field change detection
  • Implements tests for BooleanField with None values
  • Ensures invalid fields are skipped similar to deferred fields

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
fieldsignals/signals.py Adds try-except block around field.to_python() to catch ValidationError and skip fields with invalid values, preventing crashes during change detection
fieldsignals/tests/test_signals.py Adds BooleanField test class and two test cases: one verifying that post_init doesn't crash with None values, and another testing field transitions from invalid to valid states

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@craigds craigds merged commit e564666 into master Dec 25, 2025
11 checks passed
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.

Admin conflict?

2 participants