7

我很好奇是否有最佳实践或推荐的方法来实现这一目标?

假设我有这样的模型:

class Cat(models.Model):
    field1=models.CharField(...)
    field2=models.CharField(...)
    evil=models.BooleanField(...)

我想要完成的是我不希望任何视图能够访问邪恶为真的 Cat 记录。

我真的需要在每个 Cat.objects.filter 调用中添加 .filter(evil=False) 吗,或者有什么方法可以在课堂上做一次,让邪恶的猫永远不会出现在任何地方?

4

1 回答 1

10

好的,自定义管理器可以适应这里。只需查看文档。就像 Chris Pratt 所说,请记住,第一位经理会成为默认经理。

希望这会导致正确的方向。

更新(也许你可以这样做):

from django.db import models

class EvilCategoryManager(models.Manager):
    def get_query_set(self):
        return super(EvilCategoryManager, self).get_query_set().filter(evil=False)

class Cat(models.Model):
    #.... atrributes here
    objects = models.Manager()
    no_evil_cats = EvilCategoryManager()
于 2012-07-23T18:01:51.043 回答