【问题标题】:Django sort filtered objects by other model's valueDjango 按其他模型的值对过滤后的对象进行排序
【发布时间】:2019-08-09 10:02:55
【问题描述】:

我有以下模型,并且我通过 Item 的 object_id 字段过滤了所有 歌曲。但后来我需要使用 Itemposition 对它们进行排序。有没有办法过滤歌曲并按“项目”位置过滤?

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


    【解决方案1】:

    要按不同模型中的字段排序,请使用与通过使用双下划线查询模型关系时相同的语法,就像过滤一样。不幸的是,在您的情况下,由于“歌曲”和“项目”模型之间没有关系,因此无法按“项目模型”中的字段进行排序。

    更多信息请参考Django Docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      相关资源
      最近更新 更多