【发布时间】:2019-08-09 10:02:55
【问题描述】:
我有以下模型,并且我通过 Item 的 object_id 字段过滤了所有 歌曲。但后来我需要使用 Item 的position 对它们进行排序。有没有办法过滤歌曲并按“项目”位置过滤?
class Chart(models.Model):
title = models.CharField(max_length=120)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, limit_choices_to=CONTENT_TYPE_LIMIT)
class Version(models.Model):
chart = models.ForeignKey("Chart", related_name="versions", on_delete=models.CASCADE)
class Item(models.Model):
edition = models.ForeignKey(Version, on_delete=models.CASCADE, related_name="items")
object_id = models.UUIDField(db_index=True)
position = models.PositiveIntegerField()
现在我首先通过list_ids = chart.versions.last().items.all() 获得chart 并获得我运行的歌曲Songs.objects.filter(id__in=list_ids) 但我也需要为此执行order_by('position')。也许我获取所有歌曲的方法是错误的。因为 Items 的 object_id 必须是 Songs id,尽管它故意不是 ForeignKey。
【问题讨论】:
标签: python django django-models querying