我使用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,所以是一个列表,而不是要键入的字符字段),并且它会正确地显示比赛,但只显示那些搜索到的球队在“team1”字段中的球队,而不是“team2”。你有什么想法吗?我对这个比较陌生,尝试过一些不成功的事情
我发现了问题所在。方法的名称(
filter_name
)是从不同模型的不同筛选器复制的,该筛选器具有属性name
。我将方法名更改为filter_team1
,突然它工作了,即使在filter_team1
方法本身中我同时使用了team1
和team2
属性您可以检查引用:How to perform OR condition in django queryset?
相关问题 更多 >
编程相关推荐