gpt4 book ai didi

python - 在 Django 中创建自定义字段查找

转载 作者:太空狗 更新时间:2023-10-29 17:55:42 25 4
gpt4 key购买 nike

如何创建自定义 field lookups在 Django ?

过滤查询集时,django 提供了一组您可以使用的查询:__contains__iexact__in 等等。我希望能够为我的经理提供新的查找,例如,有人可以说:

twentysomethings = Person.objects.filter(age__within5=25)

并取回年龄在 20 到 30 之间的所有 Person 对象。我是否需要将 QuerySetManager 类子类化为做这个?如何实现?

最佳答案

一种更灵活的方法是编写自定义查询集和自定义管理器。使用 ozan 的代码:

class PersonQuerySet(models.query.QuerySet):
def in_age_range(self, min, max):
return self.filter(age__gte=min, age__lt=max)

class PersonManager(models.Manager):
def get_query_set(self):
return PersonQuerySet(self.model)

def __getattr__(self, name):
return getattr(self.get_query_set(), name)

class Person(models.Model):
age = #...

objects = PersonManager()

这允许您链接自定义查询。所以这两个查询都是有效的:

Person.objects.in_age_range(20,30)

Person.objects.exclude(somefield = some_value).in_age_range(20, 30)

关于python - 在 Django 中创建自定义字段查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2203179/

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