从模型中获取价值

时间:2016-09-30 08:40:36

标签: django django-models

我有2个问题。

首先,我的模型包含字段obj_id,text,creation_date。

在表格中,它看起来像:

obj_id text creation_date

1      '1'  01.01.2016
1      '2'  01.02.2016
2      '3'  01.03.2016
2      '4'  01.04.2016

我需要使用MAX'creative_date'返回'obj_id'的列表

之后我需要执行SQL

select * from someModel where obj_id in (list)

如何使用最佳Django实践来实现它?

P.S。两个模型之间没有任何关系。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

    someModelobject = someModel.objects.order_by('creation_date')
    objList = []
    for data in someModelobject:
        objList.append(data.id)

感谢。

答案 1 :(得分:0)

这应该不是问题,您可以尝试使用obj_id查询集中的最大值来生成查询范围,然后从每个查询中获取最新日期:

from django.core.exceptions import ObjectDoesNotExist
    result=[]
biggestID=someModel.objects.latest('obj_id') 
#someModel.objects.all().aggregate(Max('obj_id'))

for i in range(biggestID.obj_id)
   try: 
    val=someModel.objects.filter(obj_id=i).latest('creation_date')
   except ObjectDoesNotExist:
    val=None 
   if val is not None:   
     result.append(val)

您也可以尝试:

someModel.objects.values('obj_id').annotate(creation_date=Max('creation_date'))

我想指出这一点,你可能知道这一点,但如果你使用你的obj_id作为主键,这将无法工作,因为主键应该是唯一的。