Как я могу получить список news_id из таблицы manytomanyfield в django?

#mysql #django

#mysql #django

Вопрос:

 class news(models.Model):
    category = models.ForeignKey(category, on_delete=models.CASCADE)
    source = models.ForeignKey(source, on_delete = models.CASCADE)
    headlines = models.TextField(blank=True, null=True)
    description = models.TextField(blank=True, null=True)
    site = models.URLField(null=True)
    story = models.TextField(blank=True, null=True)
    datetime = models.CharField(blank=True, max_length=255)
    image_url = models.URLField(blank=True, null=True)
    favourite = models.ManyToManyField(User, related_name='favourite', blank=True)

-----------------
news_favourite table has id, news_id, user_id
---- -------------
  

Я хочу выполнить запрос типа

 select news_id from news_favourite where user_id= 1
  

(или это может быть любой идентификатор пользователя).

Комментарии:

1. news.objects.filter(favourite=current_user)

2. Или, если вы хотите, только news_id тогда вы можете использовать это news.objects.filter(favourite=current_user).values_list('id', flat=True)

Ответ №1:

Для этого вы можете использовать Django QuerySet.Filter.

Например, для вашего случая:

 NewsFavourite.objects.filter(user_id=1).news
  

Это вернет набор запросов новостей.