exclude deleted existing objects according to changes
This commit is contained in:
parent
18174c373a
commit
2ae30613dc
2 changed files with 6 additions and 1 deletions
|
@ -32,6 +32,7 @@ class ChangeSet(models.Model):
|
||||||
self.default_author = None
|
self.default_author = None
|
||||||
self.parsed = False
|
self.parsed = False
|
||||||
self.updated_values = {}
|
self.updated_values = {}
|
||||||
|
self.deleted_existing = {}
|
||||||
|
|
||||||
def parse_changes(self):
|
def parse_changes(self):
|
||||||
if self.parsed:
|
if self.parsed:
|
||||||
|
@ -44,6 +45,9 @@ class ChangeSet(models.Model):
|
||||||
self.updated_values.setdefault(change.model_class, {}).setdefault(change.obj_pk, {}).update({
|
self.updated_values.setdefault(change.model_class, {}).setdefault(change.obj_pk, {}).update({
|
||||||
change.field_name: json.loads(change.field_value)
|
change.field_name: json.loads(change.field_value)
|
||||||
})
|
})
|
||||||
|
elif change.action == 'delete':
|
||||||
|
if change.existing_object_pk is not None:
|
||||||
|
self.deleted_existing.setdefault(change.model_class, set()).add(change.existing_object_pk)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def qs_base(cls, hide_applied=True):
|
def qs_base(cls, hide_applied=True):
|
||||||
|
|
|
@ -223,7 +223,8 @@ class BaseQueryWrapper(BaseWrapper):
|
||||||
|
|
||||||
|
|
||||||
class ManagerWrapper(BaseQueryWrapper):
|
class ManagerWrapper(BaseQueryWrapper):
|
||||||
pass
|
def all(self):
|
||||||
|
return self._wrap_queryset(self._obj.exclude(pk__in=self._changeset.deleted_existing.get(self._obj.model, ())))
|
||||||
|
|
||||||
|
|
||||||
class ManyRelatedManagerWrapper(ManagerWrapper):
|
class ManyRelatedManagerWrapper(ManagerWrapper):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue