Djangoアプリがあり、ユーザーが写真を投稿したり、他の写真の下にコメントを残したりします。
コメントが残されたら、通知する必要があります:
(1)については、次のことを行います。
#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]
次に、(2)の場合、次のことを試みます。
all_relevant_ids = all_commenter_ids.append(which_photo.owner_id)
all_relevant_ids = list(set(all_relevant_ids))
私はエラーになります:
「ValuesListQuerySet」オブジェクトには「append」属性がありません
values_listを抽出しているので、これは奇妙だと思います。
それはリストオブジェクトではなく、その場合、属性append
はこのシナリオでは機能しませんか?何が悪いのかを説明し、代替案を提案してください。
_values_list
_メソッドはValuesListQuerySet
を返します。これは、クエリセットの利点があることを意味します。たとえば、遅延しているため、スライスするときにデータベースから最初の25要素のみをフェッチします。
リストに変換するには、list()
を使用します。
_all_commenter_ids = PhotoComment.objects.filter(which_photo=which_photo).order_by('-id').values_list('submitted_by', flat=True)[:25]
all_commenter_ids = list(all_commenter_ids)
_
_values_list
_を使用する代わりに、User
モデルからクエリセットを開始できる場合があります。モデルを表示していないので、次のコードは推測です。
_from Django.db.models import Q
commenters = User.objects.filter(Q(id=which_photo.owner_id)|Q(photocomment=which_photo))
_