【问题标题】:Django - serializing queryset along with related modelsDjango - 将查询集与相关模型一起序列化
【发布时间】:2016-09-17 14:09:03
【问题描述】:

有数百篇与基本目标相关的帖子。

我有一个简单的模型:

class ModelA(models.Model):
     # I've got only two fields in reality, 
     # but let's suppose there are 150 of them

class ModelB(models.Model):
    # fields

class ModelC(models.Model):
    field_c = Integer
    modelA = models.ForeignKey('ModelB')
    modelB = models.ForeignKey(ModelC)

model_c_instance = ModelC.objects.select_related().get(pk=pk)

我想要做的只是想出一个 JSON 对象,其中包含 ModelA 和 ModelB 的字段。

  1. Wadofstaff (post) 不适合 Django 1.7 及更高版本。
  2. post 没有说明我应该如何序列化对象。
  3. 这个post 讲述了完整的序列化器,但是没有代码 sn-p 来查看它是如何使用的。

我的最终 JSON 对象应该看起来像

[{
    "model": "userinfo", 
    "fields": {
           "field_c ": "9966", 
           "modelA": [{ 
                  # modelA fields
          }
           etc...
    }] 

我需要 REST 框架吗?还是完整的序列化器?
请任何人都可以建议这个主题的结构化答案。我两周都想不出解决方案。

【问题讨论】:

    标签: json django serialization


    【解决方案1】:

    您想使用nested relationship。您没有显示有关 userinfo 模型的任何内容,因此此答案没有考虑到这一点。您可以执行类似于此伪代码的操作:

    # serializers.py
    
    from rest_framework import serializers
    
    
    class ModelASerializer(serializers.ModelSerializer):
        class Meta:
            model = ModelA       
    
    
    class ModelBSerializer(serializers.ModelSerializer):
        class Meta:
            model = ModelB
    
    
    class ModelCSerializer(serializers.ModelSerializer):
        modelA = ModelASerializer(many=True)
        modelB = ModelBSerializer(many=True)
    
        class Meta:
            model = ModelC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多