python - 使用查询从特定表中获取数据并将其显示在 django 的管理端

标签 python django

我正在开发一个 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/

相关文章:

python - pip 显示错误 'lsb_release -a' 返回非零退出状态 1

python - 我应该如何为球队、球员和比赛对象设计 django 模型?

Django - Apache2 内部服务器错误

python - 为 skimage 中的 regionprops 添加额外的属性

python - Keras - 恢复特定时间戳的 LSTM 隐藏状态

python - 无法获取 Django 模板来打印格式化 JSON

python - django 和 mod_wsgi 的配置问题

css - Django在css文件中使用背景图片的方法

python - 根据自定义字典对字符串进行分词

python - 我做错了什么(在 python 中通过重载实现替代相等)