#python #django #django-models #django-views
#python #django #django-модели #django-представления
Вопрос:
Я создаю BlogApp и застрял на проблеме.
Что я пытаюсь сделать
Я пытаюсь получить доступ ко всем данным только одного Model instance
in Function Based View
.
Вкратце
Я пытаюсь показать все сообщения, понравившиеся a all the users
на определенной странице.
Что я пробовал
1). post = Paintings.objects.filter(likes=pk)
- Это не сработало, потому что оно показывает только сообщения вошедшего в систему пользователя. И я хочу получить все понравившиеся сообщения.
2). post = Paintings.objects.all()
- Это также не сработало для меня.
models.py
class Post(models.Model):
post_owner = models.ForeignKey(User,default='',null=True,on_delete=models.CASCADE)
likes = models.ManyToManyField(User, related_name='post_like', blank=True)
views.py
def featured_paintings(request,pk):
post = Post.objects.filter(likes=pk)
context = {'post':post}
return render(request, 'mains/featured_posts.html', context)
Я не знаю, что делать.
Любая помощь будет оценена.
Заранее благодарю
Комментарии:
1. Вам нужны все сообщения, которые понравились хотя бы одному пользователю, или вам нужны все сообщения, которые понравились всем пользователям?
2. Спасибо за комментарий, я хочу, чтобы все сообщения понравились хотя бы одному пользователю
Ответ №1:
Вы можете использовать isnull
поиск для фильтрации отношений, имеющих хотя бы один связанный объект
Post.objects.filter(likes__isnull=False)
Комментарии:
1. Спасибо. Вот в чем дело
Ответ №2:
Попробуйте исключить сообщения, которые совпадают likes=None
, это даст вам все экземпляры, у которых есть хотя бы один лайк:
post = Post.objects.exclude(likes=None)
Комментарии:
1. Большое вам спасибо, оба ответа сработали нормально. Можете ли вы подсказать мне, что я должен отметить как
Correct Answer
?2. @Progam Ответ Иэна Шелвингтона он был раньше на несколько секунд.
3. Спасибо, вы очень любезны