组模型的 Django 管理器不起作用 - returns 空查询集
Django Manager for Group model does not work - returns empty queryset
我是初级开发者。我想为 Django Groups 创建经理。一个新的和一个将覆盖默认管理器的
编辑:Django 1.8,python 2.7.15
我的经理:
class DefaultGroupManager(models.Manager):
def get_queryset(self):
test_ids = Test.objects.values_list('rel_group_id', flat=True)
return super(DefaultGroupManager, self).get_queryset().exclude(id__in=test_ids)
class AllGroupsManager(models.Manager):
def get_queryset(self):
return super(AllGroupsManager, self).get_queryset().exclude(rel_group__start_date__lte=datetime.now()-timedelta(days=30))
我和这些经理一起创造了这样的东西:
dgm = DefaultGroupManager()
agm = AllGroupsManager()
agm.contribute_to_class(Group, 'get_all')
dgm.contribute_to_class(Group, 'objects')
它正在工作。我可以使用 Group.get_all.all()
和新的 Group.objects.all()
。在 return 中,我有适当的对象列表。
但是我的高级开发人员说我必须通过创建继承自 Group 的新 Group 模型来实现。所以我做了:
我的群组模型:
class GroupModel(Group):
get_all = DefaultGroupManager()
objects = AllGroupsManager()
但是不行!
当我使用 GroupModel.get_all.all()
或覆盖 GroupModel.objects.all()
时,它 return 是空列表 []
而不是包含大量对象的列表。
一切似乎都很好:(
如有任何帮助,我将不胜感激!
如果您要定义一个新的 class,您肯定希望将其设为 proxy 组。否则它将有自己的数据库 table,如您所见,其中没有任何数据。
class GroupModel(Group):
get_all = DefaultGroupManager()
objects = AllGroupsManager()
class Meta:
proxy = True
我是初级开发者。我想为 Django Groups 创建经理。一个新的和一个将覆盖默认管理器的 编辑:Django 1.8,python 2.7.15
我的经理:
class DefaultGroupManager(models.Manager):
def get_queryset(self):
test_ids = Test.objects.values_list('rel_group_id', flat=True)
return super(DefaultGroupManager, self).get_queryset().exclude(id__in=test_ids)
class AllGroupsManager(models.Manager):
def get_queryset(self):
return super(AllGroupsManager, self).get_queryset().exclude(rel_group__start_date__lte=datetime.now()-timedelta(days=30))
我和这些经理一起创造了这样的东西:
dgm = DefaultGroupManager()
agm = AllGroupsManager()
agm.contribute_to_class(Group, 'get_all')
dgm.contribute_to_class(Group, 'objects')
它正在工作。我可以使用 Group.get_all.all()
和新的 Group.objects.all()
。在 return 中,我有适当的对象列表。
但是我的高级开发人员说我必须通过创建继承自 Group 的新 Group 模型来实现。所以我做了:
我的群组模型:
class GroupModel(Group):
get_all = DefaultGroupManager()
objects = AllGroupsManager()
但是不行!
当我使用 GroupModel.get_all.all()
或覆盖 GroupModel.objects.all()
时,它 return 是空列表 []
而不是包含大量对象的列表。
一切似乎都很好:(
如有任何帮助,我将不胜感激!
如果您要定义一个新的 class,您肯定希望将其设为 proxy 组。否则它将有自己的数据库 table,如您所见,其中没有任何数据。
class GroupModel(Group):
get_all = DefaultGroupManager()
objects = AllGroupsManager()
class Meta:
proxy = True