Skip to content

DoesNotExist: Problem installing fixture '<fixture.json>': <ClassModel> matching query does not exist. #5

@fpoulain

Description

@fpoulain

Hi, I experienced an exception when loading a fixture of a projet using tracking fields. Not sure if it's a bug or feature (this long-living sqlite database might have minor inconsistencies).

Traceback (most recent call last):
  File "manage.py", line 27, in <module>
    execute_from_command_line(sys.argv)
  File "venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "venv/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "venv/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "venv/lib/python3.7/site-packages/django/core/management/commands/loaddata.py", line 72, in handle
    self.loaddata(fixture_labels)
  File "venv/lib/python3.7/site-packages/django/core/management/commands/loaddata.py", line 114, in loaddata
    self.load_label(fixture_label)
  File "venv/lib/python3.7/site-packages/django/core/management/commands/loaddata.py", line 181, in load_label
    obj.save(using=self.using)
  File "venv/lib/python3.7/site-packages/django/core/serializers/base.py", line 226, in save
    getattr(self.object, accessor_name).set(object_list)
  File "venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 997, in set
    self.add(*new_objs, through_defaults=through_defaults)
  File "venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 938, in add
    through_defaults=through_defaults,
  File "venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 1076, in _add_items
    model=self.model, pk_set=new_ids, using=db,
  File "venv/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in send
    for receiver in self._live_receivers(sender)
  File "venv/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "venv/lib/python3.7/site-packages/tracking_fields/tracking.py", line 405, in tracking_m2m
    objects = [model.objects.get(pk=pk) for pk in pk_set]
  File "venv/lib/python3.7/site-packages/tracking_fields/tracking.py", line 405, in <listcomp>
    objects = [model.objects.get(pk=pk) for pk in pk_set]
  File "venv/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "venv/lib/python3.7/site-packages/django/db/models/query.py", line 408, in get

Munging tracking.py the following way made it passing:

        # Get the model of the object being tracked
        tracked_model = instance._meta.model
        objects = []
        try:
            if pk_set is not None:
                objects = [model.objects.get(pk=pk) for pk in pk_set]
            _create_tracked_event_m2m(
                tracked_model, instance, sender, objects, action_event[action]
            )
        except:
            print(sender, instance, action, reverse, model, pk_set, using)

(actually tracking data is helpfull but in this case I don't care if they lack some buggy details)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions