我使用的是Django rest framework3.2.1,GET
很完美,但是{
这是模型:
class Sample(models.Model):
ownerBuilding = models.ForeignKey(Building)
coordinateX = models.IntegerField(default=0, help_text='X coordinate for this sampling point located in a building')
coordinateY = models.IntegerField(default=0, help_text='Y coordinate for this sampling point located in a building')
creation_Time = models.DateTimeField(auto_now_add=True)
description = models.TextField(null=True,
help_text='additional description for this sample point.')
class Meta:
unique_together = ('ownerBuilding', 'coordinateX','coordinateY')
def __str__(self):
return "Sample for building " + str(self.ownerBuilding)
序列化程序:
^{pr2}$观点:
class SampleList(generics.ListCreateAPIView):
queryset = Sample.objects.all()
serializer_class = SampleSerializer
permission_classes = (permissions.IsAuthenticated, IsTechniciansGroupOrReadOnly,)
def get_queryset(self):
queryset = Sample.objects.all()
ownerBuildingId = self.request.query_params.get('ownerBuildingId', None)
if ownerBuildingId is not None:
queryset = queryset.filter(ownerBuilding=ownerBuildingId)
return queryset
当我用数据测试此API的POST
时:
{"ownerBuilding":"http://rest.xxxxxxxx.xyz:8090/buildings/1/","coordinateX":33,"coordinateY":44,"description":"5dfadfasdfsadf5"}
我总是得到这样的错误:
{
"ownerBuilding": [
"This field is required."
]
}
有人能帮忙吗?在
http://rest.xxxxxxxx.xyz:8090/buildings/1/
存在。在
[编辑0]:
如果我POST
与:
{"coordinateX":33,"coordinateY":44,"description":"5dfadfasdfsadf5"}
我还是得到同样的结果。在
序列化程序字段是required by default。在
此外,DRF
ModelSerializer
(和HyperlinkedModelSerializer
)为所有模型的unique_together
添加了UniqueTogetherValidator
s。这隐式地使约束中的所有字段都是必需的,但为其设置了默认值的字段除外。见doc。在ownerBuilding
在序列化程序上是只读的:但您不提供defualt,也不手动设置值,因此此字段被视为空,因此会显示错误消息。在
删除
read_only
或设置默认值。在相关问题 更多 >
编程相关推荐