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