You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django如何让过滤器仅展示当前登录用户创建的关联数据选项

解决方案

默认情况下django-filter的多对多关联字段会加载对应模型的全部实例作为可选值,所以会出现其他用户创建的Automation选项,你可以通过给过滤器传入当前账户参数,重写过滤器的自动化选项查询集实现需求,修改代码如下:

  • 第一步:修改MessageFilter过滤器类,新增初始化逻辑过滤可选选项
class MessageFilter(django_filters.FilterSet):
    class Meta:
        model = Message  # 我们要构建过滤器的对应模型
        fields = '__all__'
        exclude = ['account', 'date_created', 'text', 'subject']

    def __init__(self, *args, **kwargs):
        # 提取传入的当前账户参数
        account = kwargs.pop('account', None)
        super().__init__(*args, **kwargs)
        if account:
            # 将automations过滤器的可选值限制为当前账户创建的内容
            self.filters['automations'].queryset = account.automation_set.all()
  • 第二步:修改视图函数,实例化过滤器时传入当前账户
    找到视图中过滤器实例化的代码行,修改为:
filter = MessageFilter(request.GET, queryset=messages, account=account)

修改完成后,过滤器的Automation下拉框就只会展示当前登录用户对应账户下创建的内容了。

内容的提问来源于stack exchange,提问作者user8758206

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:15:03