我正在使用 FilterUserMixin 过滤表单中的数据。我有模型“游戏”,它具有属性“team1”和“team2”。我希望过滤器获取列表中某个团队是 team1 或 team2 的所有游戏。我的过滤器看起来像这样:
class GamesFilter(FilterUserMixin):
name = django_filters.CharFilter(method='filter_name', label='Team name')
def filter_name(self,queryset,name,value):
queryset = queryset.filter(team2=value) | queryset.filter(team1=value)
return queryset
class Meta:
model = Game
fields = ('team1','team2',)
过滤器确实出现在表单中,它显示所有注册的团队(它是一个 ModelChoiceField,所以是一个列表,而不是一个要输入的 CharField),并且它正确地显示了比赛,但只显示了搜索到的球队在“team1”中的比赛' 字段,而不是 'team2'。你有什么想法吗?,我对此比较陌生,并尝试了一些不成功的事情。
我发现了问题所在。方法 ( filter_name
)的名称是从不同模型的不同过滤器复制而来的,该过滤器具有 属性name
。我将方法名称更改为filter_team1
并突然起作用了,即使在filter_team1
方法本身中我同时使用了team1
和team2
属性
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句