I am trying to do this:
UserLog.objects.filter(user=user).filter(action='message').filter(timestamp__lt=now)[0:5].update(read=True)
but I am getting this error:
Cannot update a query once a slice has been taken.
(using django 1.2.1)
What am I doing wrong?
The documentation suggests that something like the following might be possible - I'm not sure if doing the limiting in an inner QuerySet
bypasses the check around calling update()
after slicing:
inner_q = UserLog.objects.filter(user=user, action='message', timestamp__lt=now).values('pk')[0:5] UserLog.objects.filter(pk__in=inner_q).update(read=True)
Failing that, you could use the in
field lookup like so:
ids = UserLog.objects.filter(user=user, action='message', timestamp__lt=now).values_list('pk', flat=True)[0:5] UserLog.objects.filter(pk__in=list(ids)).update(read=True)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With