Соглашения о присвоении имен файла банки

У вас есть сообщения, отнесенные к категориям. Каждое сообщение может быть отнесено только к одной категории (так как у вас есть 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, чтобы получить все связанные сообщения.

19
задан Greg Hewgill 23 September 2008 в 07:12
поделиться

1 ответ

Я использовал

*Informative*-*name*-*M*.*m*.*b*.jar

Где:

M = major version number (измененный, когда обратная совместимость не обязательно сохраняется)

m = minor version number (дополнения функции и т.д.)

b = build number (для выпусков, содержащих исправления ошибок)

21
ответ дан 30 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

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