[英]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.