【发布时间】:2018-10-03 01:21:52
【问题描述】:
型号
class Task(Model):
employee_owner = ForeignKey(Employee, on_delete=CASCADE)
employee_doer = ForeignKey(Employee, on_delete=CASCADE)
观看次数
class TaskViewSet(ModelViewSet):
serializer_class = TaskSerializer
queryset = Task.objects.all()
filter_class = TaskFilter
过滤器
class TaskFilter(FilterSet):
owner_id = NumberFilter(name='employee_owner__id')
doer_id = NumberFilter(name='employee_doer__id')
class Meta:
model = Task
fields = {
'owner_id',
'doer_id'
}
端点
http://localhost:8000/api/tasks?owner_id=1&doer_id=1
(仅提供 owner 和 doer 是同一员工的那些任务)
http://localhost:8000/api/tasks?owner_id=1
(仅提供owner 是特定员工且doer 是任何人的任务)
http://localhost:8000/api/tasks?doer_id=1
(仅提供doer 是特定员工且owner 是任何人的任务)
我想要什么
我想要一个类似的端点:
http://localhost:8000/api/tasks?both_id=1
(这会给我以上 3 个端点的所有结果)
我希望django-filter 进行过滤,就像:
Task.objects.filter(
Q(employee_owner__id=1) | Q(employee_doer__id=1)
)
我怎样才能做到这一点?谢谢。
【问题讨论】:
标签: python django django-rest-framework django-filter