-
-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Labels
enhancementNew feature or requestNew feature or request
Description
In
django-pictures/pictures/migrations.py
Lines 58 to 74 in 721cd80
| def from_picture_field(self, from_model: type[models.Model]): | |
| for obj in from_model._default_manager.all().iterator(): | |
| field_file = getattr(obj, self.name) | |
| field_file.delete_all() | |
| def to_picture_field( | |
| self, from_model: type[models.Model], to_model: type[models.Model] | |
| ): | |
| from_field = from_model._meta.get_field(self.name) | |
| if hasattr(from_field.attr_class, "delete_variations"): | |
| # remove obsolete django-stdimage variations | |
| for obj in from_model._default_manager.all().iterator(): | |
| field_file = getattr(obj, self.name) | |
| field_file.delete_variations() | |
| for obj in to_model._default_manager.all().iterator(): | |
| field_file = getattr(obj, self.name) | |
| field_file.save_all() |
all objects are iterated over. Similar to #120 empty objects shouldn't be considered. Suggestion:
def from_picture_field(self, from_model: type[models.Model]):
for obj in from_model._default_manager.exclude(
Q(**{self.name: ""}) | Q(**{self.name: None})
).iterator():
field_file = getattr(obj, self.name)
field_file.delete_all()
def to_picture_field(
self, from_model: type[models.Model], to_model: type[models.Model]
):
from_field = from_model._meta.get_field(self.name)
if hasattr(from_field.attr_class, "delete_variations"):
# remove obsolete django-stdimage variations
for obj in from_model._default_manager.exclude(
Q(**{self.name: ""}) | Q(**{self.name: None})
).iterator():
field_file = getattr(obj, self.name)
field_file.delete_variations()
for obj in to_model._default_manager.exclude(
Q(**{self.name: ""}) | Q(**{self.name: None})
).iterator():
field_file = getattr(obj, self.name)
field_file.save_all()This results in a considerable speedup with many objects with optional picture fields when migrating from/to Django Pictures.
Metadata
Metadata
Labels
enhancementNew feature or requestNew feature or request