wil*_*low 7 python django filtering
我想默认只返回"已发布"实例(已发布= True).是否可以覆盖.objects,以便MyModel.objects.all()实际返回MyModel.objects.filter(published = True)?
这是明智的吗?在极少数情况下,如果我想要它们,我将如何获得未发表的?
ars*_*ars 19
您可以通过编写自定义管理器来执行此操作- 只需覆盖该get_queryset方法并将您objects设置为Manager实例.例如:
class MyModelManager(models.Manager):
def get_queryset(self):
return super(MyModelManager, self).get_queryset().filter(published=True)
class MyModel(models.Model):
# fields
# ...
objects = MyModelManager()
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅文档.如果这将是你通常的默认情况,这是明智的.要取消发布,请创建另一个管理员,您可以通过类似的方式访问该管理员MyModel.unpublished_objects.同样,文档中有关于此类事物的示例.
| 归档时间: |
|
| 查看次数: |
5354 次 |
| 最近记录: |