簡體   English   中英

一個 Django DetailView 中的兩個模型並按它們之間的關系過濾

[英]Two models in one Django DetailView and filtering by relation betwen them

我有個問題。 在我的DetailView我想放置來自兩個模型的數據。 此外,我想過濾它們,在我的scenario-detail上只有與特定場景相關的評論,由外鍵->場景相關。

我的意見views.py

class ScenarioDetailView(LoginRequiredMixin, DetailView):
    model = Scenario

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comments'] = Comment.objects.all()
        return context

scenario_detail.html我有一個簡單的{{ comments }}

我想在views.py過濾我的評論對象,例如: Comment.objects.get(commentScenario=Scenario.id)但它根本不起作用。

我的models.py

class Scenario(models.Model):
    scenarioTitle = models.CharField(max_length=256)
    scenarioArea = models.ForeignKey(ScenarioArea, on_delete=models.CASCADE)
    scenarioAuthor = models.ForeignKey(User, on_delete=models.CASCADE)
    scenarioDate = models.DateTimeField(default=timezone.now)
    scenarioDescription = models.TextField()

    def __str__(self):
        return self.scenarioTitle

    def get_absolute_url(self):
        return reverse('scenario-detail', kwargs={'pk': self.pk})

class Comment(models.Model):
    commentText = models.CharField(max_length=256)
    commentScenario = models.ForeignKey(Scenario, on_delete=models.CASCADE)
    commentAuthor = models.ForeignKey(User, on_delete=models.CASCADE)
    commentDate = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.commentText

urls.py

path('scenario/<int:pk>/', ScenarioDetailView.as_view(), name='scenario-detail'),

有人可以幫助我嗎?

您不需要向模板發送任何額外的上下文來顯示相關評論 由於您已經對具有后向關系Scenario進行了相關評論。

因此,您可以簡單地在模板中使用Scenario.comment_set.all來訪問它們。

舉個例子:

{% for comment in object.comment_set.all %}
  {{ comment }}
{% endfor %}

嘗試這個

class ScenarioDetailView(LoginRequiredMixin, DetailView):
    model = Scenario

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comments'] = Comment.objects.filter(commentScenario=self.object)
        return context

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM