【问题标题】:Django rest framework - adding fields to the existing model fieldDjango rest 框架 - 向现有模型字段添加字段
【发布时间】:2017-10-22 00:44:43
【问题描述】:

我想创建一个表单字段以在模型中的特定字段中添加一些输入字段和值。我是这个 python 和 Django 休息的新手。注意:我不应该更改模型和序列化程序。我可以为此创建新的序列化程序。

这个我很纠结

我的期望:

{
  "id"  : "6fe7c9dd-8d69-4337-8f96-6d67463f6a1d",
  "name": "xyz",
  "age" : 22,
  "additional_detail":{
         "details": {
            "bloodgroup" : "A+ve",
            "city" : "abc"
         }
    }
}

models.py

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

class StudentSerializer(serializers.ModelSerializer):
        class Meta:
            model = Student
            fields = '__all__'

views.py

class StudentViewSet(viewsets.ModelViewSet):   
    queryset = student.objects.all()
    serializer_class = StudentSerializer

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

"details": {
            "bloodgroup" : "A+ve",
            "city" : "abc"
          }

我想将此字段作为 id 的 put 或 patch 方法插入到新视图中。 是否可以通过为这些添加文件执行非模型序列化程序? 请将所有 .py 作为文件的完整解决方案发送给我

【问题讨论】:

    标签: python-2.7 django-models django-forms django-views django-rest-framework


    【解决方案1】:

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

    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__'
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 2015-01-17
      • 1970-01-01
      • 2016-08-06
      • 2020-02-13
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多