как разделить пост просмотр на той же странице в Django

Компилятор будет генерировать код для каждого экземпляра шаблона при использовании шаблона во время этапа компиляции. В процессе компиляции и компоновки файлы .cpp преобразуются в чистый объектный или машинный код, который в них содержит ссылки или неопределенные символы, поскольку файлы .h, которые включены в ваш main.cpp, не имеют реализации YET. Они готовы быть связаны с другим объектным файлом, который определяет реализацию для вашего шаблона, и, следовательно, у вас есть полный исполняемый файл a.out. Однако, поскольку шаблоны необходимо обработать на этапе компиляции, чтобы сгенерировать код для каждого экземпляра шаблона, который вы делаете в своей основной программе, ссылка не поможет, поскольку компиляция main.cpp в main.o, а затем компиляция вашего шаблона .cpp в template.o, а затем ссылка не будет достигать цели шаблонов, потому что я связываю различные экземпляры шаблонов с одной и той же реализацией шаблона! И шаблоны должны делать обратное, т. Е. Иметь одну реализацию, но допускать много доступных экземпляров посредством использования одного класса.

Значение typename T get заменяется во время этапа компиляции, а не на этапе связывания, поэтому, если я попытаюсь для компиляции шаблона без замены T в качестве конкретного типа значения, чтобы он не работал, потому что это определение шаблонов - это процесс времени компиляции, а мета-программирование btw - все об использовании этого определения.

5
задан aditya kumar 3 March 2019 в 16:52
поделиться

1 ответ

У вас есть сообщения, отнесенные к категориям. Каждое сообщение может быть отнесено только к одной категории (так как у вас есть FK от Post до Category). И вы хотите, чтобы отображал все категории и 10 последних сообщений под каждой .

Я вижу несколько способов, как это решить. Самым простым является расширение модели Category свойством, содержащим набор запросов для извлечения связанных постов так, как вы хотите, чтобы они были на главной странице.

class Post(models.Model):

    title = models.CharField(max_length=255)
    category = models.ForeignKey('Category', on_delete=models.CASCADE, related_name='posts')
    date_posted = models.DateTimeField(default=timezone.now)


class Category(models.Model):

    title = models.CharField(max_length=255)

    @property
    def posts_for_frontpage(self):
        return self.posts.order_by('-date_posted')[:10]


class FrontpageView(ListView):

    model = Category
    template_name = 'frontpage.html'
    context_object_name = 'categories'

    def get_queryset(self):
        # select some categories for frontpage
        # all by default
        return Category.objects.all()

и затем в шаблоне

{% for category in categories %}
    <h1>{{ category.title }}</h1>
    <hr />
    {% for post in category.posts_for_frontpage %}
        <h4>{{ post.title }}</h4>
    {% endfor %}
    <br />
    <br />
{% endfor %}

Вы также можете поиграть с select_related, чтобы уменьшить количество запросов, и с annotate, чтобы получить все связанные сообщения.

0
ответ дан Dmitry Belaventsev 3 March 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: