nob*_*be4 0 django model django-admin
我有一个使用自定义管理器的模型:
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)
Run Code Online (Sandbox Code Playgroud)
但我还没有找到一种方法来显示管理中的所有项目。
我的管理员定义如下:
class ProjectAdmin(admin.ModelAdmin):
model = Project
Run Code Online (Sandbox Code Playgroud)
get_queryset我尝试在课堂上使用ProjectAdmin,但我无法找到恢复所有项目的方法。
你知道怎么做吗?
您需要将经理设置为默认经理。
objects = ProjectManager() # The default manager.
Run Code Online (Sandbox Code Playgroud)
来源:https://docs.djangoproject.com/en/4.1/topics/db/managers/#modifying-a-manager-s-initial-queryset
编辑:
这可能不是最好的解决方案,但它会起作用。
模型.py:
class Project(models.Model):
objects_unfiltered = models.Manager()
Run Code Online (Sandbox Code Playgroud)
管理员.py
class ProjectAdmin(admin.ModelAdmin):
model = Project
def get_queryset(self, request):
return self.model.objects_unfiltered.all()
admin.site.register(Project, ProjectAdmin)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1619 次 |
| 最近记录: |