django-safedelete: QuerySet first() method gives Cannot filter a query once a slice has been taken.

Hey guys!

It seems that this code change gave me an issue, as following:

User.objects.filter(email="paul@email.nl").first()

Gives me:

File "/Users/pauloostenrijk/webprojects/app/app/users/import_export/resources.py", line 57, in before_import
user = User.objects.all().filter(email=row['email']).first()
File "/Users/pauloostenrijk/.virtualenvs/app/lib/python2.7/site-packages/django/db/models/query.py", line 550, in first
objects = list((self if self.ordered else self.order_by('pk'))[:1])
File "/Users/pauloostenrijk/.virtualenvs/app/lib/python2.7/site-packages/django/db/models/query.py", line 258, in __iter__
self._fetch_all()
File "/Users/pauloostenrijk/.virtualenvs/app/lib/python2.7/site-packages/safedelete/queryset.py", line 121, in decorator
self._filter_visibility()
File "/Users/pauloostenrijk/.virtualenvs/app/lib/python2.7/site-packages/safedelete/queryset.py", line 98, in _filter_visibility
"Cannot filter a query once a slice has been taken."
AssertionError: Cannot filter a query once a slice has been taken.

Here are some implementation details:

from safedelete.managers import SafeDeleteManager

class UserManager(BaseUserManager, SafeDeleteManager):
@python_2_unicode_compatible
class User(SafeDeleteModel, AbstractBaseUser, TimeStampedUUIDModel, PermissionsMixin):
    objects = UserManager()

Version: 0.4.1

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 6
  • Comments: 20 (14 by maintainers)

Most upvoted comments

0.4.2 has been released with the fix.

Thanks for the report, I fixed it in master but I don’t have the time to do a release right now. It will be for next week now.

@ewen we are aware of the issue and it’ll get fixed in #77 as well.