Py学习  »  问与答

django 怎么获取list_filter的值

sixgodquduoduo • 11 年前 • 10052 次点击  

在django model中 有app_name, app_size字段 现在modeladmin中有list_filter = [app_name, app_size]

talk is cheap, show you the code:

class XXX(models.Model):
    app_name = models.CharField(XXX)

class XXXAdmin(admin.ModelAdmin):
    list_filter = [app_name, ]

上述代码会在过滤器中把所有不重复的app_name显示出来,并可以过滤查询,如果我想要得到显示的这些app_name,django有现成的方式实现吗?如果没有,有什么高效的方式去获取呢?

小弟接触django时间不是很长,但是遇到了现在这个问题,自己网上google了许多,官方文档也看了,但还是没有找到答案,也许我看得不够仔细,希望各位大大能指出来 求助各位大神,希望得到各位的帮助,谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/494
 
10052 次点击  
文章 [ 6 ]  |  最新文章 11 年前
sixgodquduoduo
Reply   •   1 楼
sixgodquduoduo    11 年前

@Django中国社区 不好意思,几天没来。谢谢啦~

Py站长
Reply   •   2 楼
Py站长    11 年前

@sixgodquduoduo 在你的model里加个函数,函数返回:

self._meta.get_all_field_names()

写个View来调用model这个函数,然后显示在页面上

sixgodquduoduo
Reply   •   3 楼
sixgodquduoduo    11 年前

@Django中国社区 在web页面上,有一个下拉框显示所有的app_name以供选择

Py站长
Reply   •   4 楼
Py站长    11 年前

@sixgodquduoduo 你要在哪里显示?

sixgodquduoduo
Reply   •   5 楼
sixgodquduoduo    11 年前

@Django中国社区 谢谢!很感激你的热心帮助。 不过可能是我的提问有所误导了。这个app_name,并不是django的application的name,是一个model里面的某个字段,用来存放游戏名称的。modeladmin中用list_filter在web页面上提供一个根据app_name筛选的过滤器,然后现在需要用到去重的app_name。尽量用django的方式,不用sql,有没有办法呢?

Py站长
Reply   •   6 楼
Py站长    11 年前
from django.db.models import get_models

for model in get_models():
    # Do something with your model here
    print model.__name__, [x.name for x in model._meta.fields]

http://stackoverflow.com/questions/4111244/get-a-list-of-all-installed-applications-in-django-and-their-attributes