0
我的基於類的視圖看起來像這樣。 「Get」用於列出所有預訂,「Post」用於創建新預訂。Django Rest Framework v3.0:如何在保存對象時將自定義序列化器字段映射到模型字段?
class BookingList(APIView):
def get(self, request, format=None):
bookings = Booking.objects.all()
paginator = Paginator(bookings, 10)
page = paginator.page(1)
serializer = BookingSerializer(page.object_list, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = BookingSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
而我的串行器類看起來像這樣。
class BookingSerializer(serializers.HyperlinkedModelSerializer):
field1 = serializers.SerializerMethodField('get_alternate_var1')
field2 = serializers.SerializerMethodField('get_alternate_var2')
class Meta:
model = Booking
fields = ('field1', 'field2','var3','var4')
def get_alternate_field1(self, obj):
return obj.var1
def get_alternate_field2(self,obj):
return obj.var2
class Booking(models.Model):
var1 = models.CharField(max_length=200)
var2 = models.CharField(max_length=200)
var3 = models.CharField(max_length=200)
var4 = models.CharField(max_length=200)
....
現在,這與GET方法完美無缺。如何使用POST創建一個新對象? 我的後params是field1,field2,var3,我必須在保存之前將默認值(uuid)添加到var4。我無法將field1,field2映射到Model的var1和var2。我該如何解決這個問題?