Как получить доступ к элементам внутри списка наборов запросов в django?

#python #django #list #django-queryset

#python #django #Список #django-queryset

Вопрос:

Мне нужно отобразить НЕСКОЛЬКО сообщений от НЕСКОЛЬКИХ пользователей, за которыми в настоящее время следит зарегистрированный пользователь, на одной странице, используя шаблоны django. Это функция, которую я написал:

 def following(request, userName):
    userProfiles = FollowingList.objects.filter(listOwner = request.user)
    print("userProfile is ", userProfiles)
    
    listOfAllPosts = []

    #get posts against following
    for uP in userProfiles:
        getPosts = Posts.objects.filter(created_by = uP.followingID)
        print("Value of getPosts is", getPosts)


        for i in getPosts:
            listOfAllPosts.append(getPosts.values('created_by', 'postContent', 'dateAndTime'))

        print("Printing ALL posts", listOfAllPosts)
    return render(request, "network/following.html", {
            "listOfAllPosts" : listOfAllPosts
            })

 

Результат, который я получаю из listOfAllPosts, выглядит следующим образом:

  [<QuerySet [{'created_by': 12, 'postContent': 'I have hot air balloon rides', 'dateAndTime': datetime.datetime(2021, 1, 30, 4, 21, 3, 192704, tzinfo=<UTC>)}, 
{'created_by': 12, 'postContent': 'adding second post', 'dateAndTime': datetime.datetime(2021, 2, 1, 7, 2, 51, 734510, tzinfo=<UTC>)}]>, 
<QuerySet [{'created_by': 11, 'postContent': 'Hello Sifaah', 'dateAndTime': datetime.datetime(2021, 1, 30, 4, 4, 31, 410825, tzinfo=<UTC>)}]>]

 

Однако я хочу, чтобы результат выглядел так, чтобы я мог легко распечатать его на странице HTML:

 [<QuerySet[{'created_by': 12, 'postContent': 'I have hot air balloon rides', 'dateAndTime': datetime.datetime(2021, 1, 30, 4, 21, 3, 192704, tzinfo=<UTC>)}, 
{'created_by': 12, 'postContent': 'adding second post', 'dateAndTime': datetime.datetime(2021, 2, 1, 7, 2, 51, 734510, tzinfo=<UTC>)}, 
{'created_by': 11, 'postContent': 'Hello Sifaah', 'dateAndTime': datetime.datetime(2021, 1, 30, 4, 4, 31, 410825, tzinfo=<UTC>)}]>]
 

Есть ли способ добиться этого?

Комментарии:

1. Вы просто хотите напечатать весь набор запросов в виде строки на своей HTML-странице?

2. Почему в вашем цикле for i in getPosts: вы снова и снова добавляете один и тот же набор запросов в список? вы хотели добавить i ?

Ответ №1:

Если вы поместите что-то подобное в свой following.html файл

 {% for users_posts in listOfAllPosts %}
    {% for post in users_posts %}
        <p>{{ post }}</p>
    {% endfor %} 
{% endfor %}
 

Вы получите результат, который выглядит так на вашей странице.

строка запроса

Если вы вместо этого поместите что-то подобное в свой following.html файл

 {% for users_posts in listOfAllPosts %}
    {% for post in users_posts %}
        <p>Created By: {{ post.created_by }}</p>
        <p>Post Content: {{ post.postContent }}</p>
        <p>Date: {{ post.dateAndTime }}</p>
    {% endfor %} 
{% endfor %}
 

Вместо этого вы получите результат, который выглядит следующим образом.

форматированные сообщения

Комментарии:

1. Нет проблем. Рад, что смог помочь!