我有一个使用自定义管理器的模型:
class ProjectManager(models.Manager):
def get_queryset(self):
return super(ProjectManager, self).get_queryset() \
.exclude(archived_date__isnull=False)
class Project(models.Model):
objects = ProjectManager()
archived_date = models.DateTimeField(null=True, blank=True)
但我还没有办法在管理员中显示所有项目。
我的管理员定义如下:
class ProjectAdmin(admin.ModelAdmin):
model = Project
我尝试在get_queryset
课程中使用ProjectAdmin
,但我找不到办法取回所有项目。
你知道办法吗?
答案 0 :(得分:2)
您需要将管理器设置为默认管理器。
objects = ProjectManager() # The default manager.
来源:https://docs.djangoproject.com/en/1.9/topics/db/managers/#modifying-a-manager-s-initial-queryset
编辑:
这可能不是最佳解决方案,但这可行。
models.py:
class Project(models.Model):
objects_unfiltered = models.Manager()
admin.py
class ProjectAdmin(admin.ModelAdmin):
model = Project
def get_queryset(self, request):
return self.model.objects_unfiltered.all()
admin.site.register(Project, ProjectAdmin)