Я пробую и ошибаюсь в своем запросе django. Я пытаюсь получить поле с одним значением столбца, рядом с которым содержатся списки элементов. В основном я пытаюсь выяснить, как достичь этого результата:
{
feed: {},
[{
id: 1,
media_id: 11
}, {
id: 2,
media_id: 22
}]
}
Я пробовал в оболочке python этот запрос, и он дал мне следующий результат:
>>> query = Feed.objects.filter(Q(feedmedia__isnull=True)|Q(feedmedia__isnull=False)).values('message','feedmedia__id','feedmedia__media_id').distinct()
>>> print(query)
<FeedQuerySet [{'message': 'Classic motorcycles <3', 'feedmedia__id': 145, 'feedmedia__media_id': 152}, {'message': 'sample video', 'feedmedia__id': 147, 'feedmedia__media_id': 153}, {'message': 'Classic motorcycles <3', 'feedmedia__id': 146, 'feedmedia__media_id': 151}]>
На result Я понимаю, почему включено «сообщение» (одно из полей в таблице каналов), и проблема в том, что я не знаю, как я собираюсь исключить его, чтобы получить желаемый результат.
В этой операции задействованы три модели:
class Media(models.Model):
original_url = models.CharField(max_length=200, null=False, unique=False)
small_url = models.CharField(max_length=200, null=True, unique=False)
medium_url = models.CharField(max_length=200, null=True, unique=False)
large_url = models.CharField(max_length=200, null=True, unique=False)
uploaded_at = models.DateTimeField(auto_now_add=True)
class Meta:
db_table = "media"
class Feed(models.Model):
message = models.CharField(max_length=3000, null=True, unique=False)
type = models.CharField(max_length=50, null=False, unique=False)
category = models.CharField(max_length=50, null=False, unique=False)
priority_level = models.IntegerField(default=0, null=False, unique=False)
origin_location = models.CharField(max_length=100, null=True, unique=False)
created_at = models.DateTimeField(auto_now_add=True)
objects = FeedManager()
class Meta:
db_table = 'feed'
# Junction Table for Feed and Media
class FeedMedia(models.Model):
"""Model to represent gosam posts/feeds."""
media = models.ForeignKey(Media, on_delete=models.CASCADE, null=False)
feed = models.ForeignKey(Feed, on_delete=models.CASCADE, null=False)
creator = models.ForeignKey(Profile, on_delete=models.CASCADE, null=False)
objects = FeedMediaManager()
class Meta:
db_table = 'feed_media'