首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django rest框架-将字段添加到现有的模型字段

Django rest框架-将字段添加到现有的模型字段
EN

Stack Overflow用户
提问于 2017-05-22 11:17:05
回答 1查看 742关注 0票数 0

我想要创建一个表单字段,以在模型中添加一些输入字段和值。我对这条蟒蛇和Django休息很陌生。注意:我不应该更改模型和序列化程序。我可以为此创建新的序列化程序。

我受够了

我的期待:

代码语言:javascript
复制
{
  "id"  : "6fe7c9dd-8d69-4337-8f96-6d67463f6a1d",
  "name": "xyz",
  "age" : 22,
  "additional_detail":{
         "details": {
            "bloodgroup" : "A+ve",
            "city" : "abc"
         }
    }
}

models.py

代码语言:javascript
复制
class Student(models.model)
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField()
    age = models.IntergerField()
    additional_detail = JSONField(_details)

serizlizer.py

代码语言:javascript
复制
class StudentSerializer(serializers.ModelSerializer):
        class Meta:
            model = Student
            fields = '__all__'

views.py

代码语言:javascript
复制
class StudentViewSet(viewsets.ModelViewSet):   
    queryset = student.objects.all()
    serializer_class = StudentSerializer

我想像这样插入"additional_detail“字段

代码语言:javascript
复制
"details": {
            "bloodgroup" : "A+ve",
            "city" : "abc"
          }

我希望将此字段插入到新视图中,作为put或修补程序的id方法。是否可以对这些附加文件进行非模型序列化?请将所有.py的完整解决方案作为文件发送给我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-01 10:42:48

一个快速的解决方案可以实现to_representation方法。

代码语言:javascript
复制
class StudentSerializer(serializers.ModelSerializer):

    def to_representation(self, student):
        # Serialize the student object
        serialized_data = super(StudentSerializer, self).to_representation(student)
        # Include your non-model data
        serialized_data["additional_details"]["details"] = {
            "bloodgroup" : "A+ve",
            "city" : "abc"
        }
        return serialized_data

    class Meta:
        model = Student
        fields = '__all__'

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44111505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档