Django REST框架通过FK获取列表视图
我想要一个项目视图,只有投资的状态是“失败”或“取消”,但在上面代码中,结果中的所有投资不仅状态是“失败”或“取消”,如何做到这一点?您需要使用Django REST框架通过FK获取列表视图,django,django-rest-framework,Django,Django Rest Framework,我想要一个项目视图,只有投资的状态是“失败”或“取消”,但在上面代码中,结果中的所有投资不仅状态是“失败”或“取消”,如何做到这一点?您需要使用项目序列化器的序列化器方法字段中的过滤器,例如: class Project(models.Model): user = models.ForeignKey(USER) status = models.CharField(max_length=100, choices=(('NEW', 'NEW'), ('CLOSE', 'CLOSE')
项目序列化器的序列化器方法字段中的过滤器,例如:
class Project(models.Model):
user = models.ForeignKey(USER)
status = models.CharField(max_length=100, choices=(('NEW', 'NEW'), ('CLOSE', 'CLOSE'), ('CANCEL', 'CANCEL')))
class Investment(models.Model):
project = models.ForeignKey(Project)
status = models.CharField(max_length=100, choices=(('BOOKED', 'BOOKED'), ('FAIL', 'FAIL'), ('CANCEL', 'CANCEL')))
class ProjectSerializer(serializers.ModelSerializer):
investment = InvestmentSerializer(many=True)
class Meta:
model = Project
fields = ('id', 'status', 'investment')
class ProjectView(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
serializer_class = ProjectSerializer
def get_queryset(self):
return Project.objects.filter(user=self.request.user, status__in= ['CLOSE', 'CANCEL'], investment__status__in=["FAIL", "CANCEL"]))
更多详细信息简单我可以建议在project=models.ForeignKey(project,related\u name='investment')上使用相关的
class ProjectSerializer(serializers.ModelSerializer):
investment = serializers.SerializerMethodField()
def get_investment(self, obj):
qs = obj.investment.filter(status__in=["FAIL", "CANCEL"])
serializer = InvestmentSerializer(qs, many=True)
return serializer.data