Похожие предыдущие посты внутри детального просмотра - PullRequest
0 голосов
/ 26 марта 2019

В моем PostDetailView я пытаюсь отобразить предыдущие посты для игры, которая связана с постом в PostDetailView. Я не уверен, как отфильтровать сообщение по игре в PostDetailView

 class Game(models.Model):
        title = models.CharField(max_length=100)
        slug = models.SlugField(unique=True)
        cover = models.ImageField(upload_to='cover_images')  



    class Post(models.Model):
            author = models.ForeignKey(User, models.SET_NULL, blank=True,
                                       null=True, )  # If user is deleted keep all updates by said user
            article_title = models.CharField(max_length=250, help_text="Use format: Release Notes for MM/DD/YYYY")
            content = models.TextField()
            date_published = models.DateTimeField(db_index=True, default=timezone.now,
                                                  help_text="Use date of update not current time")
            game = models.ForeignKey(Game, on_delete=models.CASCADE)

Views.py

class PostDetailView(DetailView):
    model = Post

Edit:

Я отображаю только один пост в PostDetailView. Однако, на стороне, я хочу получить список всех предыдущих постов (это будет ссылка на новый постдетейл для этого поста) в той же игре (ForeignKeyed to Game model), что и пост в PostDetailView

Ответы [ 3 ]

1 голос
/ 26 марта 2019

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

class PostDetailView(DetailView):
    model = Post
    queryset = Post.objects.select_related('game')

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context.update({
            'related': self.get_object().game.post_set.all()
        })
        return context
0 голосов
/ 26 марта 2019

Вместо DetailView напишите свой собственный вид с нуля и загрузите в него и Игры, и Сообщения.

Кроме того, отступ в классе Post должен быть на том же уровне, что и класс Game.

0 голосов
/ 26 марта 2019

Вы можете использовать:

game = Post.objects.filter(game__title__contains = "Name of the game")

В любом случае, как и другие говорили в комментариях, вы не можете использовать DetailView для этого (потому что он получает только один объект, проиндексированный по URL), но, возможно, захотите использовать ListView или простое представление на основе функций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...