在 DetailView Django 中过滤外键
Filter foreign key in DetailView Django
我 运行 查询集查询有问题,我需要为与本文相关的每篇文章显示某些标签。每篇文章都有与文章 ID 关联的标签。
model.py
class NewsDB(models.Model):
title = models.CharField('Название',max_length=300)
text = models.TextField('Текст статьи')
img = models.ImageField('Фото',upload_to='News',null='Без фото')
avtor = models.ForeignKey('Journalist', on_delete=models.PROTECT)
date = models.DateField()
def __str__(self):
return self.title
class Meta:
verbose_name = 'News'
verbose_name_plural = 'News DataBase'
class Hashtags(models.Model):
News=models.ForeignKey('NewsDB',on_delete=models.PROTECT)
Hashtag=models.CharField('Хештег',max_length=150,null='Без темы')
def __str__(self):
return self.Hashtag
view.py
class Show_post(DetailView):
model = NewsDB
template_name = 'navigation/post.html'
context_object_name = 'newsDB'
def get_context_data(self,**kwargs):
hashtags = super(Show_post,self).get_context_data(**kwargs)
hashtags['hashtags_list'] = Hashtags.objects.filter(News=self.pk)
return hashtags
您需要指定 kwargs
class Show_post(DetailView):
model = NewsDB
template_name = 'navigation/post.html'
context_object_name = 'newsDB'
def get_context_data(self,**kwargs):
hashtags = super(Show_post,self).get_context_data(**kwargs)
# the problem is in this line
hashtags['hashtags_list'] = Hashtags.objects.filter(News=self.kwargs['pk'])
return hashtags
我 运行 查询集查询有问题,我需要为与本文相关的每篇文章显示某些标签。每篇文章都有与文章 ID 关联的标签。
model.py
class NewsDB(models.Model):
title = models.CharField('Название',max_length=300)
text = models.TextField('Текст статьи')
img = models.ImageField('Фото',upload_to='News',null='Без фото')
avtor = models.ForeignKey('Journalist', on_delete=models.PROTECT)
date = models.DateField()
def __str__(self):
return self.title
class Meta:
verbose_name = 'News'
verbose_name_plural = 'News DataBase'
class Hashtags(models.Model):
News=models.ForeignKey('NewsDB',on_delete=models.PROTECT)
Hashtag=models.CharField('Хештег',max_length=150,null='Без темы')
def __str__(self):
return self.Hashtag
view.py
class Show_post(DetailView):
model = NewsDB
template_name = 'navigation/post.html'
context_object_name = 'newsDB'
def get_context_data(self,**kwargs):
hashtags = super(Show_post,self).get_context_data(**kwargs)
hashtags['hashtags_list'] = Hashtags.objects.filter(News=self.pk)
return hashtags
您需要指定 kwargs
class Show_post(DetailView):
model = NewsDB
template_name = 'navigation/post.html'
context_object_name = 'newsDB'
def get_context_data(self,**kwargs):
hashtags = super(Show_post,self).get_context_data(**kwargs)
# the problem is in this line
hashtags['hashtags_list'] = Hashtags.objects.filter(News=self.kwargs['pk'])
return hashtags