[英]How to filter by nested field in Django
我正在使用 Django Rest 框架做一个小项目,我有两个模型
class Task(models.Model):
status = models.ForeignKey(Status, related_name="tasks", on_delete=models.CASCADE)
contact = models.ForeignKey(Contact, on_delete=models.CASCADE)
title = models.CharField(max_length=60, blank=False, null=False)
class Status(models.Model):
title = models.CharField(blank=False, null=False, max_length=255)
slug = models.CharField(blank=False, null=False, max_length=255)
order = models.SmallIntegerField(default=0)
def __str__(self):
return self.title
这是我的序列化程序:
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = '__all__'
class StatusSerializer(serializers.ModelSerializer):
tasks = TaskSerializer(many=True)
class Meta:
model = Status
fields = '__all__'
这是我的视图代码:
def list(self, request):
objectSerializer = StatusSerializer(Status.objects.all(), many=True)
return Response(objectSerializer.data)
直到我对我创建的数据结构感到满意为止,我现在想在我的视图中创建另一个 function 以按 (contact) 过滤,这是一个外键,如您所见
我找到了解决方案,
@action(methods=['get'], detail=False)
def contactRalatedTasks(self, contactID):
queryset = Status.objects.prefetch_related(Prefetch('tasks', queryset = Task.objects.filter(contact=contactID))).all()
s = StatusSerializer(queryset, many = True)
return s
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.