首页 > 解决方案 > Django 使用表单集休息

问题描述

现在我有一个工作表单集页面,使用外键在 ModelA 中创建一条记录,为 ModelB 创建 3 条记录。现在我想为此创建restApi,现在我已经将一个模型链接到另一个模型,但我的问题是如何让ModelB为这个模型添加几次。

序列化程序.py

class DailyMontageCreateSerializer(serializers.ModelSerializer):
  class MonterDailyTempSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.MonterDaily
        exclude = ['daily_montage', 'created', 'updated']
        validators = [
            UniqueTogetherValidator(
                queryset=models.MonterDaily.objects.all(),
                fields=['name', 'date']
            )
        ]

daily_montage = MonterDailyTempSerializer()

class Meta:
    model = models.DailyMontage
    exclude = ['created', 'updated']
    validators = [
        UniqueTogetherValidator(
            queryset=models.DailyMontage.objects.all(),
            fields=['team', 'date']
        )
    ]

def create(self, validated_data):
    model_b_data = validated_data.pop('daily_montage')
    model_a_instance = models.DailyMontage.objects.create(**validated_data)

    models.MonterDaily.objects.create(daily_montage=model_a_instance,
                                      **model_b_data)

    return model_a_instance

视图.py

class DailyMontageCreateAPIView(generics.CreateAPIView):
    queryset = models.MonterDaily.objects.all()
    serializer_class = serializers.DailyMontageCreateSerializer

现在,如果我要这样添加就好了

{
"daily_montage": {
    "status": null,
    "name": 1
},

"type": null,
"date": null,
"user": 1,

}

但我想成为那样

{
"daily_montage": {
    "status": null,
    "name": 1
},
"daily_montage": {
    "status": null,
    "name": 2
},
"daily_montage": {
    "status": null,
    "name": 3
},
"type": null,
"date": null,
"user": 1,

}

编辑//

我在 serializers.py 中解决了我的问题

daily_montage = MonterDailyTempSerializer(many=true)

下一行是编辑:

def create(self, validated_data):
    model_b_data = validated_data.pop('daily_montage')
    model_a_instance = models.DailyMontage.objects.create(**validated_data)

    for model_b in model_b_data:
     
models.MonterDaily.objects.create(daily_montage=model_a_instance,
                                      **model_b)

    return model_a_instance

现在 json 应该看起来像这样发布:

"daily_montage": [
    {
        Model_B
    },
    {
        Model_B        
    },
    {
        Model_B
    }
],
"type": "",
"day_montage": "",
"date": "",
"user": null,

}

标签: djangodjango-rest-framework

解决方案


推荐阅读