您可以使用ModelManager
和覆盖默认值objects
,例如:
class ExcludeNotAccepted(models.Manager):
def get_queryset(self):
return super().get_queryset().exclude(accepted=False)
class SomeClassModel(models.Model):
value = models.CharField(max_length=244)
accepted = models.BooleanField(default=False)
# make the default objects exclusive of non-accepted
objects = ExcludeNotAccepted()
# still allow explicit access via another name
all_objects = models.Manager()
在访问SomeClassModel.objects.all()
时自动过滤掉不可接受的项目具有预期的效果,但是您仍然可以通过显式使用SomeClassModel.all_objects.all()
... 访问所有对象。