I have a Django app where users post photos, and other leave comments under the photos.
When a comment is left, I need to notify:
- Everyone else who wrote in this thread
- The owner of the photo, in case they're not included in (1)
For (1), I do:
#I slice by 25 because I arbitrarily deem anyone beyond that irrelevant.
all_commenter_ids = PhotoComment.objects.filter(which_photo=which_photo).order_by('-id').values_list('submitted_by', flat=True)[:25]
Next, for (2), I try:
all_relevant_ids = all_commenter_ids.append(which_photo.owner_id)
all_relevant_ids = list(set(all_relevant_ids))
I end up with an error:
'ValuesListQuerySet' object has no attribute 'append'
I find this strange, because I'm extracting a values_list.
Isn't that a list object, and in that case, shouldn't the attribute append
work in this scenario? Please explain what's wrong, and suggest alternatives.
The
values_list
method returns aValuesListQuerySet
. This means it has the advantages of a queryset. For example it is lazy, so you only fetch the first 25 elements from the database when you slice it.To convert it to a list, use
list()
.You might be able to start the queryset from your
User
model instead of usingvalues_list
. You haven't shown your models, so the following code is a guess: