Django 自定义模型管理器
Django custom model manager
如果我们有这样的模型
class SomeModel(models.Model):
field_1 = models.IntegerField()
field_2 = models.IntegerField()
并且在给定 value
的每个查询中,如果我们必须检查这两个字段,是否可以使用自定义 Manager
来简化冗余 (field_1=value, field_2=value
)?
SomeModel.objects.filter(Q(field_1=value) | Q(field_2=value))
SomeModel.objects.filter(Q(field_1=value) | Q(field_2=value)).count()
是的,你可以做一个mananger,比如:
class SomeModelManager(models.Manager):
def with_value(self, value):
return self.get_queryset().filter(field_1=value, field_2=value)
或使用 or 条件:
from django.db.models import Q
class SomeModelManager(models.Manager):
def with_value(self, value):
return self.get_queryset().filter(Q(field_1=value) | Q(field_2=value)
然后我们可以将经理添加到 SomeModel
模型:
class SomeModel(models.Model):
field_1 = models.IntegerField()
field_2 = models.IntegerField()
object = <b>SomeModelManager()</b>
然后您可以访问过滤后的查询集:
SomeModel.objects<b>.with_value(value)</b>
SomeModel.objects<b>.with_value(value)</b>.count()
如果我们有这样的模型
class SomeModel(models.Model):
field_1 = models.IntegerField()
field_2 = models.IntegerField()
并且在给定 value
的每个查询中,如果我们必须检查这两个字段,是否可以使用自定义 Manager
来简化冗余 (field_1=value, field_2=value
)?
SomeModel.objects.filter(Q(field_1=value) | Q(field_2=value))
SomeModel.objects.filter(Q(field_1=value) | Q(field_2=value)).count()
是的,你可以做一个mananger,比如:
class SomeModelManager(models.Manager):
def with_value(self, value):
return self.get_queryset().filter(field_1=value, field_2=value)
或使用 or 条件:
from django.db.models import Q
class SomeModelManager(models.Manager):
def with_value(self, value):
return self.get_queryset().filter(Q(field_1=value) | Q(field_2=value)
然后我们可以将经理添加到 SomeModel
模型:
class SomeModel(models.Model):
field_1 = models.IntegerField()
field_2 = models.IntegerField()
object = <b>SomeModelManager()</b>
然后您可以访问过滤后的查询集:
SomeModel.objects<b>.with_value(value)</b>
SomeModel.objects<b>.with_value(value)</b>.count()