【问题标题】:How to use filters on Foreignkey Fields in Django Rest Framework如何在 Django Rest Framework 中的外键字段上使用过滤器
【发布时间】:2026-01-19 10:55:02
【问题描述】:

在下面的类中,'dep' 是一个与 Employee 模型关联的外键字段。

Views.py

class Sample(ListAPIView)
queryset=Employee.Objects.all()
serializer_class = EmployeeSerializer
filter_backends = [SearchFilter]
search_fields = ['dep']

模型.py

class Employee(models.Model):
    FirstName=models.CharField(max_length=30)
    LastName = models.CharField(max_length=30)
    Salary = models.FloatField()
    Email = models.CharField(max_length=35)
    Dep   =models.Foreignkey(Department)

但是当我将 dep has a filter 传递给 endpt 时,它会抛出 Related Field got invalid lookup: icontains 错误。

【问题讨论】:

    标签: python python-3.x django django-models django-rest-framework


    【解决方案1】:

    您可以使用查找 API 双下划线符号 __ 对 ForeignKey 或 ManyToManyField 执行相关查找

    试试这个

    search_fields = ['DEP__id', 'DEP__field_name']
    

    参考这个https://www.django-rest-framework.org/api-guide/filtering/

    【讨论】:

    • 我在过滤器中传递部门名称,所以它的 [DEP__name] 列名称或 [DEPARTMENT__name] 模型名称
    • DEP__name 这个
    最近更新 更多