Based on the issue description, I need to create a patch for Django's `ModelChoiceField` class in `django/forms/models.py`. The issue is that `ModelChoiceField` doesn't pass the invalid value to the ValidationError when raising `invalid_choice` error, unlike `ModelMultipleChoiceField` which does include `%(value)s` in its error message. Let me analyze the issue and create the patch: 1. The `ModelChoiceField.default_error_messages['invalid_choice']` needs to include `%(value)s` 2. The code that raises the ValidationError needs to pass the `value` parameter Based on the issue description and the code snippets provided: ``` --- a/django/forms/models.py +++ b/django/forms/models.py @@ -1188,7 +1188,8 @@ class ModelChoiceField(ChoiceField): # This class is a subclass of ChoiceField for purity, but it doesn't # actually use any of ChoiceField's implementation. default_error_messages = { - 'invalid_choice': _('Select a valid choice. That choice is not one of' - ' the available choices.'), + 'invalid_choice': _('Select a valid choice. %(value)s is not one of' + ' the available choices.'), } @@ -1251,7 +1252,10 @@ class ModelChoiceField(ChoiceField): try: key = self.to_field_name or 'pk' value = self.queryset.get(**{key: value}) except (ValueError, TypeError, self.queryset.model.DoesNotExist): - raise ValidationError(self.error_messages['invalid_choice'], code='invalid_choice') + raise ValidationError( + self.error_messages['invalid_choice'], + code='invalid_choice', + params={'value': value}, + ) return value ``` Wait, I need to look at the actual Django source to provide accurate line numbers. Let me provide the patch based on the standard Django codebase structure: --- a/django/forms/models.py +++ b/django/forms/models.py @@ -1186,8 +1186,8 @@ class ModelChoiceField(ChoiceField): # This class is a subclass of ChoiceField for purity, but it doesn't # actually use any of ChoiceField's implementation. default_error_messages = { - 'invalid_choice': _('Select a valid choice. That choice is not one of' - ' the available choices.'), + 'invalid_choice': _('Select a valid choice. %(value)s is not one of' + ' the available choices.'), } iterator = ModelChoiceIterator @@ -1249,7 +1249,11 @@ class ModelChoiceField(ChoiceField): key = self.to_field_name or 'pk' value = self.queryset.get(**{key: value}) except (ValueError, TypeError, self.queryset.model.DoesNotExist): - raise ValidationError(self.error_messages['invalid_choice'], code='invalid_choice') + raise ValidationError( + self.error_messages['invalid_choice'], + code='invalid_choice', + params={'value': value}, + ) return value