【发布时间】:2019-11-20 13:33:28
【问题描述】:
我有一个 django rest 框架项目。我想在发出 get 请求以显示与数据库结构不相似的特定方式时覆盖返回的 json 对象结构。
我当前的返回对象是这样显示的:
{
"id": 9,
"namespace": "steve",
"path": "something/another",
"value": "this is a value",
"person": 1
},
{
"id": 11,
"namespace": "namespace1",
"path": "path2",
"value": "anyoher value",
"person": 2
},
{
"id": 12,
"namespace": "namespace1",
"path": "path3",
"value": "this dsiaalks",
"person": 2
},
{
"id": 13,
"namespace": "namespace2",
"path": "path4",
"value": "asdfasdfasdf",
"person": 2
},
我想换个
"person":2
显示
"user":{
"userId":testUser
}
- testUser 是 id 为 2 的用户的用户名 *
这是我目前的 serailzer:
from rest_framework import serializers
from .models import Preference
from django.contrib.auth.models import User
class PreferenceSerializer(serializers.ModelSerializer):
person = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(),)
class Meta:
model = Preference
fields = ('id', 'namespace', 'path', 'value', 'person')
这是当前的模型:
from django.db import models
from django.contrib.auth.models import User
from owf_framework.people.models import Person
class Preference(models.Model):
id = models.BigAutoField(primary_key=True, null=False)
version = models.BigIntegerField(default=1, null=False)
path = models.CharField(max_length=200, null=False)
namespace = models.CharField(max_length=200, null=False)
value = models.TextField(null=False)
user_id = models.BigIntegerField(null=False, default=1)
person = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.namespace
class Meta:
db_table = 'preference'
字段 person 是用户的外键。
【问题讨论】:
标签: django django-rest-framework django-views django-serializer