如何在django中正确使用元属性get_latest_?

如何在django中正确使用元属性get_latest_?,django,Django,我使用q.latest()从queryset中检索最近的对象,在它的模型的Meta类中设置get\u latest\u by='created' 例如: class A(models.Model): created = models.DateTimeField(auto_now=True) class Meta: get_latest_by = 'created' 但是由于django的DateTimeField只支持秒,没有微秒级的支持,我认为我的系统没有正

我使用q.latest()从queryset中检索最近的对象,在它的模型的
Meta
类中设置
get\u latest\u by='created'

例如:

class A(models.Model):
    created = models.DateTimeField(auto_now=True)

    class Meta:
        get_latest_by = 'created'
但是由于django的
DateTimeField
只支持秒,没有微秒级的支持,我认为我的系统没有正确地从queryset检索最新的对象

这可能是因为表中有一些记录具有相同的
创建值
,尽管它们不是在完全相同的时间(微秒内)创建的

因此,我尝试在
Meta
类中使用
pk
作为
get\u latest\u by
属性,而不是
created
,但是由于我对
latest()
get\u latest\u by
如何协同工作缺乏深入的理解,我不确定将
get\u latest\u by='pk>放在一起是否正确


get\u latest\u by='pk'
放进去可以吗?而
latest()
在django的背面到底做了什么?

latest
基本上只是
order\u by
然后是
get
的快捷方式,以获取查询set ordered by
get\u latest\u by
字段中的最后一项

pk
排序是可以的,但它依赖于对应用程序和db后端如何工作的假设(例如,从高pk 9999开始导入数据…如果以后插入新数据,它是否会“填充”缺少的1、2、3、100、2000键?)

将来Django将支持微秒

目前最好将两者结合起来,即,
order\u by('created','pk')

不幸的是,
get_latest_by
latest
不允许您指定复合排序(它会删除默认的
pk
排序),因此您可能更愿意手动执行以下操作:

.order_by('-created', '-pk').get()
(请注意,
get
获取查询集中的第一项,因此您需要使用
-
前缀反转订单以获取最新的)

可能的重复项