0
votes

Here I am trying to store selected users in some django session and for this I have tried like this but while retrieving the users from session in another view I am getting empty queryset.How can i get the users which are stored in session in another django fucntion?

storing selected users in session

  selected_users = get_user_model().objects.filter(id__in=request.POST.getlist('users'))
  initial = {'users':[]}
  session = request.session.get('users',initial)
  if selected_users:
       for user in selected_users:
           if not user in session['users']:
               session['users'].append(user.email)
  print(session['users'])

here trying to retrieve these session's users in another view

 sess = request.session.get('users',{'users':[]})
    users = get_user_model().objects.filter(pk__in=sess["users"])
    print('sess',users) #didn't worked

    request.session['users'] # didn't worked either
     
1

1 Answers

1
votes

You are not setting the user list in session. You are setting email in the variable session["user"] but querying id. Also, you are trying to set the session value as a list object but using default value as a dict object.

selected_users = get_user_model().objects.filter(id__in=request.POST.getlist('users'))

session_users = request.session.get('users',[])
if selected_users:
    for user in selected_users:
        if not user in session_users:
            session_users.append(user.id)  # append id instead of email
print(session_users)

# set the value in session
request.session["users"] = session_users

Now you can retrieve the list of user.id.

sess_users = request.session.get('users',[])
users = get_user_model().objects.filter(pk__in=sess_users)
print('sess',users)

print request.session['users']