Tuesday, April 16, 2019

Unhashable TypeError when deleted from model, Django 2.2

I have a model that has a nullable field called expires. If expires is null, then the record never expires.

I’m performing a delete on the model for any record that has an expires date that has passed, and I keep getting a TypeError that Model is unhashable. Am I doing something wrong?

 

Model.objects.filter(expires__lt=timezone.now()).delete()

 

Here’s the traceback:

 

Traceback (most recent call last):

  File "\django\core\handlers\exception.py", line 34, in inner

    response = get_response(request)

  File "\django\core\handlers\base.py", line 115, in _get_response

    response = self.process_exception_by_middleware(e, request)

  File "\django\core\handlers\base.py", line 113, in _get_response

    response = wrapped_callback(request, *callback_args, **callback_kwargs)

  File "\django\views\decorators\csrf.py", line 54, in wrapped_view

    return view_func(*args, **kwargs)

  File "\django\views\generic\base.py", line 71, in view

    return self.dispatch(request, *args, **kwargs)

  File "\rest_framework\views.py", line 495, in dispatch

    response = self.handle_exception(exc)

  File "\rest_framework\views.py", line 455, in handle_exception

    self.raise_uncaught_exception(exc)

  File "\rest_framework\views.py", line 492, in dispatch

    response = handler(request, *args, **kwargs)

  File "\rest_framework\decorators.py", line 55, in handler

    return func(*args, **kwargs)

  File "C:\project\general\views.py", line 88, in all_messages_for_user

    Model.objects.filter(expires__lt=timezone.now()).delete()

  File "\django\db\models\query.py", line 710, in delete

    collector.collect(del_query)

  File "\django\db\models\deletion.py", line 192, in collect

    reverse_dependency=reverse_dependency)

  File "\django\db\models\deletion.py", line 94, in add

    if obj not in instances:

TypeError: unhashable type: 'Model'

No comments:

Post a Comment