gpt4 book ai didi

python - 如何使用 Django 查询列中第一次出现的外键?

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:24 24 4
gpt4 key购买 nike

基本上,我有一个包含一堆外键的表,并且我试图通过“created”字段仅查询特定键的第一次出现。使用博客/条目示例,如果条目模型具有博客的外键和用户的外键,那么我如何构造一个查询来选择特定用户为各个博客编写第一个条目的所有条目?

class Blog(models.Model):
...

class User(models.Model):
...

class Entry(models.Model):
blog = models.Foreignkey(Blog)
user = models.Foreignkey(User)

我认为我缺少一些魔法来选择博客的第一个条目,并且我可以通过附加以下内容来进一步简单地过滤到特定用户:

query = Entry.objects.magicquery.filter(user=user)

但也许还有其他更有效的方法。谢谢!

最佳答案

query = Entry.objects.filter(user=user).order_by('id')[0]

基本上按 id 排序(从最低到最高),然后对其进行切片以仅获取 QuerySet 中的第一个命中。

我现在没有可用的 Django 安装来测试我的线路,因此如果我有上述类型,请检查文档:

order by

limiting querysets

顺便说一句,关于“限制查询集”手册部分的有趣注释:

To retrieve a single object rather than a list (e.g. SELECT foo FROM bar LIMIT 1), use a simple index instead of a slice. For example, this returns the first Entry in the database, after ordering entries alphabetically by headline:

Entry.objects.order_by('headline')[0]

编辑:好的,这是迄今为止我能想到的最好的结果(在你和我的评论之后)。它不返回 Entry 对象,但其 id 为 entry_id

query = Entry.objects.values('blog').filter(user=user).annotate(Count('blog')).annotate(entry_id=Min('id'))

我会继续寻找更好的方法。

关于python - 如何使用 Django 查询列中第一次出现的外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com