【发布时间】:2020-08-22 06:25:51
【问题描述】:
我在我的 django 查询中做了一些试验和错误。我正在尝试获取一个字段,其旁边有一列值,其中包含元素列表。基本上我想弄清楚如何获得这个结果:
{
feed: {},
[{
id: 1,
media_id: 11
}, {
id: 2,
media_id: 22
}]
}
我在 python shell 中尝试了这个查询,它给了我这个结果:
>>> 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}]>
关于结果,我了解为什么包含“消息”(Feed 表中的字段之一),问题是我不知道如何排除它以获得所需的输出.
以下是此次操作涉及的三个模型:
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'
【问题讨论】:
标签: django django-models django-rest-framework django-orm