我正在使用Job.objects.create()
手动创建模型实例,但是我想使用self.serializer.create()
,但是我不知道如何添加剩余的部分数据。
现在我只想要
class JobCreationView(generics.CreateAPIView):
queryset = Job.objects.all()
serializer_class = JobCreatorSerializer
def create(self,request,*args,**kwargs):
rounds = RoundSerializer(data=request.data['rounds'],many=True)
rounds.is_valid(raise_exception=True)
eligibility = EligibilitySerializer(data=request.data['eligibility'])
eligibility.is_valid(raise_exception=True)
job = self.serializer_class(data=request.data['basic'],partial=True)
job.is_valid(raise_exception=True)
# after running all `is_valid` we confirm that there is no error
data = dict(request.data)
del data['rounds']
del data['eligibility']
job = Job.objects.create(
**data['basic],# company can't be null
company=request.user.account.company,# eligibility can't be null
eligibility=eligibility.save()
)
job.rounds.set(rounds.save())
return Response({
'detail': f'Created Job {job.id}'
},status=201)
我想要这样的东西
rounds = RoundSerializer(data=request.data['rounds'],partial=True)
job.is_valid(raise_exception=True)
job.validated_data['eligibility'] = eligibility.save()
job.save()
job.rounds.set(rounds.save())
实际问题是在检查is_valid
之后如何更新序列化器数据。