我有一个JourneySchedule模型,存储出发和返程:
class JouaneySchedule(models.Model):
Owner = models.ForeignKey('Profile', on_delete=models.PROTECT)
ReturnOf = models.ForeignKey('self', on_delete=models.CASCADE, null=True)
JourneyDate = models.DateField(null=True)
JourneyStartTime = models.TimeField()
IsDepart = models.BooleanField(default=True)
Fare = models.PositiveIntegerField(null=False, default=0)
出发和返回旅程通过ReturnOf自己的外键连接 .
旅程序列化器是:
class JourneyScheduleSerializer(serializers.ModelSerializer):
Owner = serializers.ReadOnlyField(source='user.id')
ReturnOf = serializers.ReadOnlyField()
class Meta:
model = JourneySchedule
fields = (
'id',
'Driver',
'ReturnOf',
'JourneyDate',
'JourneyStartTime',
'IsDepart',
'Fare'
)
我已经定义了Commute模型来使用嵌套对象一次保存离开和返回旅程(两者都是旅程的实例)
class CommuteSerializer(serializers.Serializer):
depart_journey = JourneyScheduleSerializer(required=False)
return_journey = JourneyScheduleSerializer(required=False)
class Meta:
model = JourneySchedule
fields = ('depart_journey', 'return_journey')
所以我需要首先保存depart_journey,然后将id传递给return_journey作为ReturnOf字段 . 我怎样才能做到这一点?
1 回答
您需要覆盖
CommuteSerializer
的create方法,如下所示: