编程语言
首页 > 编程语言> > python – 如何在Django模型中找到所有名称的最新匹配?

python – 如何在Django模型中找到所有名称的最新匹配?

作者:互联网

我有一个看起来像这样的django模型:

class MyModel(Model):
    name = CharField(...)
    version = IntegerField(...)
    other_stuff = ...

    unique_together = ('name', 'version')

我希望能够查询每个名称的所有最新版本,但是省略任何给定名称的所有旧版本.

Django型号可以实现吗?如果是这样,那会是什么样子?

解决方法:

我不确定你是否可以立即使用Django ORM的聚合功能来做到这一点.无论如何,我认为这个结构尖叫着这样的模型:

class MyModel(Model):
    name = CharField(...)
    some_stuff = ...

class Version(Model):
    number = IntegerField(...)
    my_model = ForeignKey(MyModel, ...)
    other_stuff = ...

所以你可以这样做以获得每个MyModel的最新版本:

>>> from django.db.models import Max
>>> MyModel.objects.annotate(highest_version = Max('version__number'))

标签:python,django,django-models,orm,django-queryset
来源: https://codeday.me/bug/20190902/1791487.html