【问题标题】:Serializer as Field is not visible in json序列化器作为字段在 json 中不可见
【发布时间】:2016-08-21 22:06:09
【问题描述】:

型号

类 makitVerifications (models.Model):

Matter_fk = models.ForeignKey(Matter,on_delete=models.CASCADE , related_name = "makit_validate")

user_fk =  models.ForeignKey('auth.User',on_delete=models.CASCADE ,  related_name = 'verification_by'   , )

序列化器

类 UserVerifyCountSerializer (serializers.ModelSerializer):

# Tried makit_validate = makitSerializer (read_only = True)

class Meta :

    model = makitVerifications
    fields = (  'user_fk', 'makit_validate', 'Matter_fk')

UserVerifyCountSerializer._declared_fields['makit_validate']= makitSerializer (read_only = True)

查看

类 UserVerfiyCountViewSet(generics.ListCreateAPIView):

serializer_class = UserVerifyCountSerializer

def get_queryset(self):

    queryset = makitVerifications.objects.all()

    return queryset

JSON

{ “计数”:2, “下一个”:空, “上一个”:空, “结果”: [ { “user_fk”:1, “物质_fk”:1 }, { “user_fk”:1, “物质_fk”:1 } ]

JSON 中缺少预期为嵌套对象的字段“makit_validate”。如何在 json 中获取相关模型的嵌套对象。

我还尝试了文档中的一个示例,但 JSON 中缺少相同的字段

还有如何从嵌套在上述序列化程序类中的对象中省略/禁用字段

Makie Serilazer

类 makitSerializer(serializers.ModelSerializer):

kamaz = kamazSerializer(many=True,read_only=True)

facilities = FacilitiesSerializer (many =True,read_only=True)

class Meta :

    model = Makit

    fields = '__all__'

## Makit Model ##
class Makit (models.Model): 
    pincode = models.IntegerField()

    area = models.CharField(max_length=200)

    street = models.CharField(max_length=200)

    landmark = models.CharField(max_length=100,blank=True , null = True)

    contact_no= models.BigIntegerField()

【问题讨论】:

  • 请添加关于makitSerializer的代码
  • @Aison 也添加了 makitSerializer 和模型

标签: django serialization django-models django-rest-framework django-serializer


【解决方案1】:

来自这里的文档:Serializer fields

试试:

makit_validate = makitSerializer(source="the_field_you_find_makit" read_only = True)

【讨论】:

  • ...当然用逗号分隔参数
猜你喜欢
  • 1970-01-01
  • 2015-12-04
  • 2018-03-31
  • 2013-07-09
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多