我很好奇是否有最佳实践或推荐方法来实现此目的?
假设我有一个这样的模型:
class Cat(models.Model):
field1=models.CharField(...)
field2=models.CharField(...)
evil=models.BooleanField(...)
我想要完成的是我不希望任何视图能够访问邪恶为真的 Cat 记录。
我是否真的需要将 .filter(evil=False) 添加到每个 Cat.objects.filter 调用中,或者是否有某种方法可以在类中执行一次并让邪恶的猫永远不会出现在任何地方?
好的,自定义经理可以适合这里。只需查看一下docs https://docs.djangoproject.com/en/dev/topics/db/managers/#custom-managers。正如克里斯·普拉特所说,请记住,第一任经理将成为默认经理。
希望这能引导我们走向正确的方向。
更新(也许你可以这样做):
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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)