как исправить "объект" QuerySet "не имеет атрибута" сообщения "" - PullRequest
0 голосов
/ 25 апреля 2019

модель закладки:

class Bookmark(models.Model):
    user = models.ForeignKey(User, related_name='users', on_delete=models.CASCADE)
    post = models.ForeignKey(Post, related_name='posts', on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        app_label = 'content'
        verbose_name_plural = _('Bookmarks')
        unique_together = [['user', 'post']]

Я хочу, чтобы запрос возвращал закладки пользователя,

Я попробовал этот Bookmark.objects.filter(user_id=user.id).order_by('-created_at').posts(), и он возвращает эту ошибку:

AttributeError: 'QuerySet' object has no attribute 'posts'

обновление:

Bookmark.objects.filter () возвращает набор запросов. У него нет атрибута posts, как говорит ошибка.

Однако вы можете пойти по другому пути. Поскольку вы хотите найти объекты Post, запросите модель Post вместо модели Bookmark.

Post.objects.filter (bookmarks__user = пользователь)

Подробнее смотрите здесь:

https://docs.djangoproject.com/en/2.2/topics/db/queries/#lookups-that-span-relationships

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Я думаю, вы ищете поле "пост" в Закладке.Вы получаете QuerySet, он возвращает списки объектов, попробуйте получить его, используя оператор for

query = Bookmark.objects.filter(user_id=user.id).order_by('-created_at')

for item in query:
   item.post 

результат запроса не имеет атрибута posts ()

0 голосов
/ 25 апреля 2019
Bookmark.objects.filter(user_id=user.id).order_by('-created_at').posts()

вернет QuerySet, который является списком.Чтобы получить доступ к объекту в этом списке, вы можете либо получить первый элемент возвращенного списка:

Bookmark.objects.filter(user_id=user.id).order_by('-created_at')[0].posts()

или использовать get() (вместо filter()):

Bookmark.objects.get(user_id=user.id).order_by('-created_at').posts()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...