【问题标题】:Filter Many to Many field with multiple values using django-filter使用 django-filter 过滤具有多个值的多对多字段
【发布时间】:2022-06-22 12:04:29
【问题描述】:

我有两个模型:TicketUser。它们具有多对多关系,可以将许多用户分配给一张票。我正在使用 django-filter 包过滤票证模型。我可以成功地按单个用户过滤票证。例如:

http://localhost:8000/tickets?users=1

但我正在尝试按分配给票证的多个用户过滤票证。

http://localhost:8000/tickets?users__in=1,2

我尝试使用 __in 运算符,但出现此错误:

'list' object has no attribute 'split'


/usr/local/lib/python3.9/site-packages/django_filters/widgets.py, line 213, in value_from_datadict

这是我的查看代码:

class TicketViewSet(ModelViewSet):
    queryset = Ticket.objects.all()
    filter_backends = (filters.DjangoFilterBackend,)
    filter_fields = {
        "status": ["in", "exact"],
        "users": ["in", "exact"]
    }

如何按用户多值过滤工单?

这是票证模型:

class Ticket:
    subject = models.CharField(max_length=128)
    status = models.CharField(max_length=7, default='new')
    users = models.ManyToManyField(User)
    is_deleted = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

【问题讨论】:

  • 您能在此处添加Ticket 模型吗?
  • @Metalgear,我用Ticket 模型更新了问题。

标签: django-rest-framework django-filter


【解决方案1】:

这是与您的情况类似的问题:https://github.com/carltongibson/django-filter/issues/1103

您可能还想尝试:

http://localhost:8000/tickets?users=1&users=2

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 2018-06-07
    • 2015-07-18
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 2020-03-20
    • 2018-05-25
    相关资源
    最近更新 更多