【发布时间】:2015-03-12 16:08:43
【问题描述】:
我的基于班级的视图如下所示。 “Get”用于列出所有预订,“Post”用于创建新预订。
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)
我的 Serializer 类看起来像这样。
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 创建新对象? 我的帖子参数是 field1、field2、var3,我必须在保存之前将默认值 (uuid) 添加到 var4。我无法将 field1、field2 映射到 Model 的 var1 和 var2。我该如何解决这个问题?
【问题讨论】:
标签: python django api django-rest-framework serialization