我正在开发一个 Django
项目,我想从特定表中获取数据并将其显示在管理端。
我有一个 Company
模型,已使用 admin.site.register(Company, Company_Admin)
在管理中注册。现在我想在从表中查询所有公司后获取所有公司,然后在管理站点中显示结果。
class Company(models.Model):
name = models.CharField(default=None,max_length=200)
description = models.TextField(default=None)
url = models.CharField(max_length=200)
published = models.BooleanField()
createdOn = models.DateTimeField(default=datetime.utcnow)
updatedOn = models.DateTimeField(default=datetime.utcnow)
keywords = models.ManyToManyField(Keyword)
def __unicode__(self):
return self.text
class CompanyAdmin(admin.ModelAdmin):
list_display = ['name', 'url', 'description', 'published', 'createdOn', 'updatedOn']
list_filter = ['name']
search_fields = ['name']
filter_horizontal = ('keywords', )
admin.site.register(Company, CompanyAdmin)
现在我想在管理面板中创建一个选项,该选项将显示所有已发布的公司,也就是说,甚至不显示未发布的公司。
最佳答案
根据 ModelAdmin.list_filter
上的文档,您可以尝试将字段名称添加到该属性中。这应该会在更改 View 的右侧栏中为您提供一个新的过滤器选项。
class CompanyAdmin(admin.ModelAdmin):
...
list_filter = ['name', 'published']
...
<小时/>
但是,如果您想对管理员完全隐藏所有未发布的实例(我不知道是否是这样,我不完全理解您的问题),那么您可以修改 ModelAdmin.get_queryset()
method .
class CompanyAdmin(admin.ModelAdmin):
...
def get_queryset(self, request):
return super().get_queryset(request).filter(published=True)
...
关于python - 使用查询从特定表中获取数据并将其显示在 django 的管理端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887621/