限制由n个字段数设置的django滤波器查询

发布于 2025-01-17 22:40:11 字数 604 浏览 0 评论 0原文

我想我不能用文字表达自己,以便我可以放一些代码,以便您可以更好地理解我的

模型

class Obj(models.Model):
  foo = models.IntegerField()

,然后我有8个对象。

obj1.foo = 1
obj2.foo = 1
obj3.foo = 1
obj4.foo = 2
obj5.foo = 2
obj6.foo = 2
obj7.foo = 3
obj8.foo = 3

使用查询集

objs = Obj.objects.all()
obj = QuerySet[obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8]

,然后我想要的查询是限制FOO的OBJ,

filtered_obj = QuerySet[
 obj1,  # foo=1
 obj2,  # foo=1
 obj4,  # foo=2
 obj5,  # foo=2
 obj7,  # foo=3
 obj8.  # foo=3
]

我不希望重复的字段超过2次。

I think I cannot well express myself with words so I can put some code so you can understand me better

I have a model

class Obj(models.Model):
  foo = models.IntegerField()

Then I have 8 objects where.

obj1.foo = 1
obj2.foo = 1
obj3.foo = 1
obj4.foo = 2
obj5.foo = 2
obj6.foo = 2
obj7.foo = 3
obj8.foo = 3

With the query set

objs = Obj.objects.all()
obj = QuerySet[obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8]

Then the query that I want is limit the obj by foo

filtered_obj = QuerySet[
 obj1,  # foo=1
 obj2,  # foo=1
 obj4,  # foo=2
 obj5,  # foo=2
 obj7,  # foo=3
 obj8.  # foo=3
]

I don't want repeated fields more than 2 times.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ˉ厌 2025-01-24 22:40:11

使用 Filter 而不是 all 并将 foo 作为参数传递

obqs = Obj.objects.filter(foo=1)[:2]
# returns QuerySet[obj1, obj2]
obqs = Obj.objects.filter(foo=3)[:2]
# returns  QuerySet[obj7, obj8]

请参阅 Django 文档

Use Filter instead of all and pass foo as param

obqs = Obj.objects.filter(foo=1)[:2]
# returns QuerySet[obj1, obj2]
obqs = Obj.objects.filter(foo=3)[:2]
# returns  QuerySet[obj7, obj8]

Refer Django Docs

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文