Fix issue caused by Django 5.1 added FileField name validation #384
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Django 5.1 introduced a breaking change in FileField.pre_save() that raises a FieldError when trying to save a file without a name attribute:
https://docs.djangoproject.com/en/5.2/releases/5.1/#miscellaneous
This caused S3FileField to fail with the error "str has no attribute .name" because the existing save_form_data method converts S3PlaceholderFile objects to strings before passing them to the parent class.
Solution
Modified save_form_data to handle S3PlaceholderFile objects by directly setting the field attribute using setattr, bypassing Django's FileField validation while maintaining the same behaviour of storing the filename as a string in the database.