簡體   English   中英

Django Rest Framework:如何在JSON中顯示外鍵的內容

[英]Django Rest Framework: how do I Display content of Foreign keys in JSON

我已經將模型序列化為具有外鍵的JSON。 API將顯示外鍵的標題,但不會嵌套屬於該外鍵的數據。 我該怎么做呢。

serializers.py

class ReportFieldSerializers(serializers.ModelSerializer):
    form = serializers.RelatedField()
    class Meta:
        model = ReportField
        fields = (
            'id',
            'title',
            'form'
        )

api.py

class ReportFieldList(APIView):
    def get(self, request, format=None):
        report_field = ReportField.objects.all()
        serialized_report_field = ReportFieldSerializers(report_field, many=True)
        return Response(serialized_report_field.data)

class ReportFieldDetail(APIView):
    def get_object(self, pk):
        try:
            return ReportField.objects.get(pk=pk)
        except ReportField.DoesNotExist:
            raise Http404

    def get(self, request, pk, format=None):
        report_field = self.get_object(pk)
        serialized_report_field = ReportFieldSerializers(report_field)
        return Response(serialized_report_field.data)

models.py

class Report(models.Model):
    title = models.CharField()
    form = models.ForeignKey()

class Form(models.Model):
    # Form details

有一個可選的depth ,可以在序列化器的Meta類中使用。 例如:

class ReportFieldSerializers(serializers.ModelSerializer):

    class Meta:
        model = ReportField
        fields = (
            'id',
            'title',
            'form'
        )
        depth = 1

這將在相關模型中向下移動一步。 如您所見,您不需要RelatedField 假設有第三個模型類,例如:

class Form(models.Model):
    example = ForeignKey('AnotherModel')

class AnotherModel(models.Model):
    # model fields

您還可以在ReportFieldSerializer使用depth=2來顯示此模型的信息。

我假設在您的模型Report ,字段form顯示為Formmodels.ForeignKey(Form)

我已經在這里回答了類似的問題: 具有內部關系的Django rest_framework序列化程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM