python django ORM 查询唯一、如重复,取最新


class test(models.Model):
    name=models.CharField(max_length=100)
    phone=models.CharField(max_length=100)
    creat_time=models.DateTimeField(auto_now_add=True)
def get_my_config_info(request):
    #获取电话
    phone=request.GET.get('phone')
        #该电话对应所有的test数据,1、如果遇到name相同,则按creat_time,获取最新的那一条
????这个有啥思路

例如
数据库

idnamephonecreat_time
1张三123452021-10-10
2李四123452021-10-11
3张三123452021-10-12
4李四123452021-10-13
5王五543212021-10-14

希望获取phone=12345的,所有信息(如有重复取最新)
[
{id:3 ,name:张三 ,phone:12345,creat_time:2021-10-12}
{id:4 ,name:李四 ,phone:12345,creat_time:2021-10-13 }
]

有啥好的思路不?

这个时间是可以直接比大小的。
你可以查询phone=12345,后面根据creat_time进行降序排序,在limit 1;选择显示一条。

类名是test

test.objects.filter(phone='12345').order_by('creat_time')[-1]

1.select max(id) as ids,name from test group by name 数据表如果是递增id的话 通过name分组查出唯一人的最大id
2.select * from test where id in ids 通过ids 查出数据

题主,你这个phone下有几个name,多个name怎么可能返回一条,不是多条吗?

主键ID是自增的,通过条件筛选和ID排序,获取第一条