Django rest_framework没有序列化关系。

问题描述 投票:0回答:1

我正在尝试用Django rest_framework来序列化外键。按照正常的DB规范化设置,外键是用来连接查找表的。

我的模型与查找表的一个例子。

class OrderStatus(models.Model):
    StatusId = models.PositiveSmallIntegerField(primary_key=True)
    StatusDescription = models.CharField(max_length=50)

class Order(models.Model):
    OrderId = models.AutoField(primary_key=True)
    OrderDate = models.DateTimeField(auto_now_add=True)
    Status = models.ForeignKey(OrderStatus, on_delete=models.CASCADE)

我的序列化器。

class OrderStatusSerializer(serializers.ModelSerializer):
    class Meta:
        model = OrderStatus
        fields = ['StatusId', 'StatusDescription']

class OrderSerializer(serializers.ModelSerializer):
    class Meta:
        model = Order
        fields = ('OrderId', 'OrderDate', 'Status')

当我调用REST API时,我得到的结果如下:

{
    "type": "Order",
    "id": "1",
    "attributes": {
        "OrderId": 1,
        "OrderDate": "2020-05-19T08:23:54"
     },
     "relationships": {
        "Status": {
            "data": {
                "type": "OrderStatus",
                "id": "1"
            }
        }
    }
}

我希望在 "属性 "中内联状态,可以是一个简单的id,也可以是一个内联两个值的JSON对象。这两个都是不错的选择,只要它不在那个 "关系 "字段中。

我试着在OrderSerializer中添加了以下内容。

Status = serializers.PrimaryKeyRelatedField(queryset=OrderStatus.objects.all())

没有区别

我试着添加以下内容。

Status = OrderStatusSerializer(many=False)

没有区别

我尝试了所有其他选项https:/github.comencodedjango-rest-frameworkblobmasterdocsapi-guiderelations.md。包括将SlugField包含描述而不是ID,但没有结果。

似乎我所做的改变对序列化没有影响。

django-rest-framework serializer
1个回答
0
投票

根据我自己的评论,这个问题是由以下原因造成的。rest_framework_json_api.renderers.JSONRenderer.

通过将其切换回 rest_framework.renderers.JSONRenderer 重新建立了预期的记录行为。

© www.soinside.com 2019 - 2024. All rights reserved.