Filtro Django excluir clave foránea

Estoy codificando un sitio web de noticias que tiene dos modelos, News y BestNews.News es una clave foránea de BestNews.News representa todas las noticias, Best News se selecciona como noticias recomendadas.

Ahora he renderizado la lista de Noticias y la Lista de Mejores Noticias en index.html. Pero algunas noticias en estas dos partes están duplicadas.

Espero noticias de que en la lista de Mejores Noticias, no aparezcan en la lista de Noticias, y una vez que haya eliminado las noticias de las Mejores Noticias en el administrador, las noticias que se eliminaron de las mejores noticias aparecerán en la lista de Noticias.

Aquí está mi modelo de noticias:

class News(models.Model): title = models.CharField(max_length=100, verbose_name='标题') content = UEditorField(verbose_name="内容", width=600, height=300, imagePath="news/ueditor/", filePath="news/ueditor/", default='') class Meta: verbose_name = "新闻" verbose_name_plural = verbose_name def __str__(self): return self.title 

Aquí está mi mejor modelo de noticias:

 class Best(models.Model): select_news = models.ForeignKey(News, on_delete=models.CASCADE, related_name='select_news',verbose_name='要闻') SELECT_REASON = ( ('左一', '左一'), ('左二', '左二'), ) select_reason = models.CharField(choices=SELECT_REASON, max_length=50, null=False) class Meta: verbose_name = "精选" verbose_name_plural = verbose_name def __str__(self): return self.select_reason + '-' + self.select_news.title 

Aquí está mi vista de lista de Noticias: Recibo la lista de Noticias y la lista de Mejores Noticias en una vista.

 class NewsView(View): def get(self, request): all_news = News.objects.all().order_by('-pk') bestnews1 = Best.objects.filter(select_reason="左一")[0].select_news bestnews2 = Best.objects.filter(select_reason="左二")[0].select_news return render(request, 'index.html', { 'all_news': news, 'bestnews1':bestnews1, 'bestnews2':bestnews1, }) 

 all_news = News.objects.all().order_by('-pk') 

a

 all_news = News.objects.filter(select_news__isnull=True).order_by('-pk') 

asesoramiento gratuito:

cambio

 bestnews1 = Best.objects.filter(select_reason="左一")[0].select_news 

a

 bestnews1 = Best.objects.filter(select_reason="左一").first() bestnews1_new = None if bestnew1 is None else bestnews1.select_news return render(request, 'index.html', { 'all_news': news, 'bestnews1_new':bestnews1_new, 'bestnews2_new':bestnews2_new, })