检查下一页时返回空查询集

2024-04-25 14:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

只有当我使一个模型具有来自同一模型的2个继承时,才会发生这种情况:

class Word(models.Model):
    cuvint = models.ForeignKey(KeyWordsMapping, on_delete=models.CASCADE, related_name="%(class)s_cuvint")
    frequency = models.IntegerField()
    is_stem = models.BooleanField()
    score_nr = models.ForeignKey(KeyWordsMapping, on_delete=models.CASCADE, related_name="%(class)s_score_nr")
    department_id = models.ForeignKey(Department, on_delete=models.CASCADE, blank=True, null=True)
    seniority_id = models.ForeignKey(Seniority, on_delete=models.CASCADE, blank=True, null=True)

一切正常,但访问第二页会得到一个空数组:

首页:

{
    "count": 311,
    "next": "http://127.0.0.1:8000/api/words?limit=1&offset=1",
    "previous": null,
    "results": [
        {
            "cuvint": "QA",
            "frequency": 4,
            "is_stem": false,
            "score_nr": 100,
            "department_id": "Quality Assurance",
            "seniority_id": null
        }
    ]
}

第二页:

{
    "count": 311,
    "next": "http://127.0.0.1:8000/api/words?limit=1&offset=2",
    "previous": "http://127.0.0.1:8000/api/words?limit=1",
    "results": []
}

我还查看了管理面板,同样的问题仍然存在。你知道吗

视图:

class WordList(mixins.ListModelMixin,
                mixins.RetrieveModelMixin,
                generics.GenericAPIView):
    queryset = Word.objects.all()
    serializer_class = WordSerializer

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

序列化程序:

class WordSerializer(serializers.ModelSerializer):
    seniority_id = serializers.SerializerMethodField()
    department_id = serializers.SerializerMethodField()
    score_nr = serializers.SerializerMethodField()
    cuvint = serializers.SerializerMethodField()

    class Meta:
        model = Word
        fields = ("cuvint", "frequency", "is_stem", "score_nr", "department_id", "seniority_id")

    def get_seniority_id(self, obj):
        if obj.seniority_id:
            return obj.seniority_id.name
        return None

    def get_department_id(self, obj):
        if obj.department_id:
            return obj.department_id.name
        return None

    def get_score_nr(self, obj):
        return obj.score_nr.score_nr

    def get_cuvint(self, obj):
        return obj.cuvint.cuvint

Tags: selfidobjgetreturnmodelsdefnr