我已经使用Django和Django Rest Framework构建了API。在我的序列化器中,我定义了一个organisation
,可以发布,但需要存储到其他模型中。我将序列化器定义如下:
class DeviceSerializer(serializers.HyperlinkedmodelSerializer):
geometrie = PointField(required=False)
organisation = serializers.CharField(source='owner.organisation')
owner = PersonSerializer(required=False)
class Meta:
model = Device
fields = (
'id','geometrie','longitude','latitude','organisation','owner',)
def get_longitude(self,obj):
if obj.geometrie:
return obj.geometrie.x
def get_latitude(self,obj):
if obj.geometrie:
return obj.geometrie.y
def create(self,validated_data):
print("ORG:",validated_data.get('organisation',"NO ORG FOUND")) #
# Do some custom logic with the organisation here
但是当我向其中发布包含organisation
的json(我对输入进行了三遍检查)时,它将打印行ORG: NO ORG FOUND
。
为什么在地球上不转发组织?
[编辑]
型号代码:
class Person(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField()
organisation = models.CharField(max_length=250,null=True,blank=True)
class Device(models.Model):
geometrie = gis_models.PointField(name='geometrie',blank=True)
owner = models.ForeignKey(to='Person',on_delete=models.SET_NULL,blank=True,related_name='owner')
和测试代码:
def test_full_post(self):
device_input = {
"geometrie": {"longitude": 4.58565,"latitude": 52.0356},"organisation": "Administration."
}
url = reverse('device-list')
self.client.force_login(self.authorized_user)
response = self.client.post(url,data=device_input,format='json')
self.client.logout()