我是Django Rest框架的初学者。我想实现一对多对象映射,如下面的json架构:
{
"from_date": "2017-08-06T12:30",
"to_date": "2017-08-06T12:30",
"coupon_name": "WELCOME100",
"min_booking_value": 150,
"applicable_days": [
{
"from_time": "13:00",
"to_time": "15:00",
"applicable_day": 2
},
{
"from_time": "16:00",
"to_time": "18:00",
"applicable_day": 3
}
]
}
Django为上面的json模式创建了以下类:
^{pr2}$以及下面的序列化程序类:
class CouponApplicableDaysSerializer(serializers.ModelSerializer):
class Meta:
model = CouponApplicableDays
fields = ('from_time', 'to_time', 'applicable_day')
class CouponSerializer(serializers.ModelSerializer):
coupon_applicable_days = CouponApplicableDaysSerializer(required=True, many=True)
class Meta:
model = Coupon
fields = ('coupon_id', 'from_date', 'to_date', 'coupon_name', 'min_booking_value', 'coupon_applicable_days',)
def create(self, validated_data):
coupon_applicable_days_data = validated_data.pop("coupon_applicable_days")
coupon = Coupon.objects.create(**validated_data)
CouponApplicableDays.objects.create(coupon=coupon, **coupon_applicable_days_data)
return coupon
当我用优惠券序列化程序保存数据时。它只保存在优惠券表中,而不是在CouponApplicableDays中。在
我知道,我在某个地方搞砸了,但我不知道在哪里。你们能看看上面的代码,告诉我怎么解决这个问题吗?在
这里有一个列表
coupon_applicable_days_data = validated_data.pop("coupon_applicable_days")
迭代列表并创建对象,如下所示:
或者使用
^{pr2}$bulk_create
方法 https://docs.djangoproject.com/en/1.11/ref/models/querysets/#bulk-create请注意,
bulk_create
不会触发pre_save/post_save
信号。在相关问题 更多 >
编程相关推荐