Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 嵌套关系返回空字典DRF_Django_Django Rest Framework - Fatal编程技术网

Django 嵌套关系返回空字典DRF

Django 嵌套关系返回空字典DRF,django,django-rest-framework,Django,Django Rest Framework,我编写了以下代码: class PredictionSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Prediction fields = ["id", "market"] depth = 1 class FixtureSerializer(serializers.HyperlinkedModelSerializer): predict

我编写了以下代码:

class PredictionSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Prediction
        fields = ["id", "market"]
        depth = 1

class FixtureSerializer(serializers.HyperlinkedModelSerializer):
    predictions = PredictionSerializer()
    class Meta:
        model = Fixture
        fields = ["sofascore_id", "home", "away", "league", "round", "date", "predictions"]
        depth = 1 

class FixtureViewSet(viewsets.ReadOnlyModelViewSet):
    """
    API endpoint that allows fixture to be viewed or edited.
    """
    serializer_class = FixtureSerializer
    permission_classes = [permissions.IsAuthenticated]
    filter_backends = [django_filters.rest_framework.DjangoFilterBackend]
    filterset_fields = ("home", "away", "sofascore_id", "statistics")

    def get_queryset(self):
        date = self.request.query_params.get('date')       
        queryset = Fixture.objects.all().order_by('-date')

        if(date):
            queryset = Fixture.objects.filter(date__date=date).order_by('date')
        return queryset
对应以下型号:

class Market(models.Model):
    name = models.CharField(max_length=200)

class Fixture(models.Model):
    sofascore_id = models.CharField(max_length=200)

    home = models.ForeignKey(Team, on_delete=models.CASCADE, related_name="home")
    away = models.ForeignKey(Team, on_delete=models.CASCADE, related_name="away")

    league = models.ForeignKey(League, on_delete=models.CASCADE, blank=True)
    round = models.CharField(max_length=200, default=None, blank=True, null=True)
    date = models.DateTimeField()

    statistics = models.ForeignKey(Statistics, on_delete=models.CASCADE, default=None, blank=True, null=True)

    updated_at = models.DateTimeField(auto_now=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return u'{0} - {1}'.format(self.home.name, self.away.name)

class Prediction(models.Model):
    market = models.ForeignKey(Market, on_delete=models.CASCADE, blank=True)
    fixture = models.ForeignKey(to=Fixture, on_delete=models.CASCADE, related_name="predictions", null=True, blank=True)
当我向/fixtures发出请求时,“预测”字典总是空的,但当我使用以下语句运行一些测试代码时:

f = Fixture.objects.get(sofascore_id=match).predictions.all()
我得到以下值作为返回值:

<QuerySet [<Prediction: Prediction object (23)>, <Prediction: Prediction object (24)>, <Prediction: Prediction object (25)>, <Prediction: Prediction object (26)>, <Prediction: Prediction object (27)>, <Prediction: Prediction object (28)>]>


这里的问题是什么?为什么我无法使用编写的代码检索我的预测

您需要在序列化程序中指定属性
many

class FixtureSerializer(serializers.HyperlinkedModelSerializer):
    predictions = PredictionSerializer(many=True, read_only=True)
    class Meta:
        model = Fixture
        fields = ["sofascore_id", "home", "away", "league", "round", "date", "predictions"]
        depth = 1 
class FixtureSerializer(serializers.HyperlinkedModelSerializer):
预测=预测序列化器(多个=真,只读=真)
类元:
型号=夹具
fields=[“sofascore_id”、“主场”、“客场”、“联赛”、“回合”、“日期”、“预测”]

depth=1
您可以添加该端点正在调用的视图/视图集吗?@drec4s添加了视图集