python - 如何向python中动态创建的类添加方法?
问题描述
from django.contrib import admin
from .filters import DropdownFilter
from django.db.models import Q
from django.utils.translation import gettext_lazy as _
from .models import User
def queryset(self, request, queryset):
term = self.value()
if term is None:
return
term = term.lower
username = Q()
for bit in term.spilt():
username = Q(username, queryset)
return queryset.filter(username)
class InputFilter(admin.filters.SimpleListFilter):
template = 'admin/input_filter.html'
def lookups(self, request, model_admin):
# Dummy, required to show the filter.
return ((),)
def choices(self, changelist):
# Grab only the "all" option.
all_choice = next(super().choices(changelist))
all_choice['query_parts'] = ((k, v)for k, v in changelist.get_filters_params().items() if k != self.parameter_name)
yield all_choice
class TransactionAdmin(admin.ModelAdmin):
list_display = [field.name for field in User._meta.fields]
c = type('UserFilter',(InputFilter,),{'title' : _('title'),'parameter_name' : 'search', 'query': queryset})
c.queryset = queryset
list_filter = [type('UserFilter',(InputFilter,),{'title' : _(i),'parameter_name' : i, 'query': queryset}) for i in list_display]
admin.site.register(User, TransactionAdmin)
代码是关于为 django 管理站点创建自定义文本输入过滤器的,在这里我想将每个字段名称传递给标题,并将 queryset 函数添加到动态创建的类中,但似乎它不起作用,我得到了一个错误像下面
NotImplementedError at /admin/epic/user/
subclasses of ListFilter must provide a queryset() method
如何解决这个问题呢?
解决方案
list_filter = [type('UserFilter',(InputFilter,),{'title' : _(i),'parameter_name' : i, 'queryset': queryset}) for i in list_display]
它现在正在工作。
推荐阅读
- ember.js - 每当Emnber octane中的参数发生变化时如何触发组件内部的函数
- php - PHP:一个 HTML 隐藏的输入值在查询 mysql 时会产生一个错误
- swift - 如何将 Firestore DocumentID 映射到 RealmObject 属性?
- java - 在 MySQL WorkBench 中正确的 MySQL Query 在 JDBC 中给出 SQLSyntaxErrorException
- react-native - React Native 测试 - 无需等待即可行动
- java - 修复现场错误 - HRS_REQUEST_PARAMETER_TO_HTTP_HEADER
- python - 在 Python 中尝试使用 Matlab 时如何有效地解决此错误?
- html - 仅对列表中的第一项进行必填字段验证
- gf - 关于 prep 在 GF 中不存在
- sql - 具有唯一值的列的 SQL 总和量