Показаны записи связанные с темой Django - PullRequest
0 голосов
/ 16 сентября 2018

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

Models.py

class Topic(models.Model):
    """A topic that is associated with a certain Category"""
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = 'Topics'

    def __str__(self):
        """Return string represtation of the model."""
        return self.text


class Entry(models.Model):
    """A entry associated with a certain topic"""
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = 'Entries'

    def __str__(self):
        """Return string represtation of the model."""
        return self.text[:50] + "..."

views.py индексное представление:

def index(request):
    """The home page for the blogging website"""
    topics = Topic.objects.order_by('-date_added')[:3]
    entries = Entry.objects.filter(id__in=topics)
    context = {'topics': topics, 'entries': entries}

    return render(request, 'blogging_logs/index.html', context)

index.html

{% for entry in entries %}
  <li>
    {{ entry }}
  </li>
{% empty %}
  <li>
    empty
  </li>
{% endfor %}

{% for topic in topics %}
  <li>
    {{ topic }}
  </li>
{% empty %}
  <li>
    empty
  </li>
{% endfor %}

Спасибо за помощь заранее.

1 Ответ

0 голосов
/ 16 сентября 2018

При запросе записей вы должны фильтровать через поле topic_id в Entry, а не через поле id.Таким образом, вы должны сделать entries = Entry.objects.filter(topic_id__in=topics) в своем представлении индекса.

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