簡體   English   中英

Django中帶有DetailView的“相關內容”列表

[英]A 'related content' list with DetailView in Django

我試圖基於“文章”模型,通過過濾其名為“ category”的模型字段來在模板中顯示“相關內容”列表。 此“類別”字段與另一個名為“類別”的模型具有ManyToMany關系。

看起來這是一個非常簡單的任務,但我不知道如何實現自己的目標。 現在,可以顯示一個列表,但是似乎沒有任何內容被過濾掉。

下面是我的DetailView類,帶有“ get_context_data()”方法,該方法可以產生用於顯示列表的模板標簽。 顯然,“ F()”類不是解決方案。

class ArticleDetail(generic.DetailView):
    model = Article
    template_name = 'article/detail.html'

    def get_context_data(self, **kwargs):
        context = super(ArticleDetail, self).get_context_data(**kwargs)
        context_related = Article.objects.filter(F('category')).distinct()
        context['related'] = context_related

        return context

此外,我還嘗試使用“ category”和“ category__exact = F('category')”之類的參數進行過濾,但仍然失敗。

這是模型(簡化問題):

class Article(models.Model):
    title = models.CharField(max_length=100)
    content_text = models.TextField()
    category = models.ManyToManyField('Category', blank=True)

    def __unicode__(self):
        return self.title

class Category(models.Model):
    title = models.CharField(max_length=100, unique=True)

    def __unicode__(self):
        return self.title

不,那根本不是F()的全部。

但是,您並沒有確切解釋您想要做什么。 我認為您正在尋找與當前文章相同類別的其他文章。 這很容易:

Article.objects.filter(category__in=self.object.categories.all())

暫無
暫無

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

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