Django rest_framework不序列化关系



我正在尝试序列化与 Django rest_framework内联的外键。外键用于根据正常的数据库规范化设置链接查找表。

我的模型与查找的示例:

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 对象。两者都是不错的选择,只要它不在"关系"字段中。

我尝试将以下内容添加到订单序列化程序:

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

没有区别。

我尝试了以下方法:

Status = OrderStatusSerializer(many=False)

没有区别。

我尝试了所有其他选项 https://github.com/encode/django-rest-framework/blob/master/docs/api-guide/relations.md 包括 SlugField 以包含描述而不是 ID,没有结果。

似乎我更改的内容对序列化没有影响。

根据我自己的评论,该问题是由rest_framework_json_api.renderers.JSONRenderer引起的。

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