from django.db import models
class CustomQuerySet(models.QuerySet):
def published(self):
return self.filter(is_published=True)
class CustomManager(models.Manager):
def get_queryset(self):
# 使用自定义的QuerySet
return CustomQuerySet(self.model, using=self._db)
class YourModel(models.Model):
# 模型字段定义
# 自定义管理器
custom_manager = CustomManager()
在上述例子中,我们首先定义了一个自定义的QuerySet类CustomQuerySet,其中包含了一个名为published的自定义查询方法,用于过滤已发布的对象。
然后,我们定义了一个自定义的管理器CustomManager,覆盖了get_queryset方法,将默认的QuerySet替换为我们的CustomQuerySet。
现在,你可以使用自定义管理器执行查询:
published_objects = YourModel.custom_manager.published()
这样,通过修改管理器的初始QuerySet,你可以提供自定义的查询方法,并使这些方法在模型的默认查询中生效。这种方式使你能够更灵活地构建模型的默认查询逻辑。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7160/Django