回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我使用Django和Django Rest框架构建了一个API。在我的序列化程序中,我定义了一个<code>organisation</code>,它可以发布,但需要存储到不同的模型中。我将序列化程序定义如下:</p>
<pre><code>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
</code></pre>
<p>但是当我向它发布一些json时,它包含一个<code>organisation</code>(我对输入进行了三次检查),它会打印出<code>ORG: NO ORG FOUND</code>行。你知道吗</p>
<p>它究竟为什么不推进组织?你知道吗</p>
<p>[编辑]</p>
<p>型号代码:</p>
<pre><code>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', null=True, blank=True)
owner = models.ForeignKey(to='Person', on_delete=models.SET_NULL, null=True, blank=True, related_name='owner')
</code></pre>
<p>以及测试代码:</p>
<pre><code>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()
</code></pre>