开发者社区> 问答> 正文

如何使用FilterUserMixin来过滤Django中的一个字段或另一个字段

我使用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”字段。你有什么主意吗?我在这方面比较生疏,也尝试过一些不成功的事情。 问题来源StackOverflow 地址:/questions/59378722/how-to-use-a-filterusermixin-to-filter-one-field-or-the-other-in-django

展开
收起
kun坤 2019-12-30 10:16:52 620 0
1 条回答
写回答
取消 提交回答
  • from django.db.models import Q
    queryset = queryset.filter(Q(team2=value) | Q(team1=value))
    

    可以参考:如何在django queryset中执行或设置条件?

    2019-12-30 10:16:58
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载