aem*_*mdy 7 django django-admin django-admin-filters
我有模型A和B,其中B有一个FK到A.
我使用django 1.3,我需要两个django管理过滤器:
1) a.b_set.exists() # (True/False)
2) not a.b_set.filter(some_condition=False).exists() # (True/False)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?可悲的是,我通过谷歌搜索找不到任何解决方案.
您需要阅读:Django 1.3或更低版本的Django Admin中的自定义过滤器
这是我没有经过任何测试的第一次尝试,但你应该看到它的完成方式 -
from django.db import models
from django.contrib.admin.filterspecs import FilterSpec, ChoicesFilterSpec
from django.utils.encoding import smart_unicode
from django.utils.translation import ugettext as _
class BNullSetFilterSpec(FilterSpec):
def __init__(self, f, request, params, model, model_admin):
super(BSetFilterSpec, self).__init__(f, request, params, model, model_admin)
self.links = (
('Yes', {'b__isnull': False}),
('No', {}))
def title(self):
return _('B Set')
# registering the filter
FilterSpec.filter_specs.insert(0, (lambda f: getattr(f, 'empty_bset', False), BNullSetFilterSpec))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |