[英]Django rest framework, use none in model's field
I have a Django rest framework API, In one of the models, there is a field for GeoLocation's elevation, which defaults its value to None.我有一个 Django rest 框架 API,在其中一个模型中,有一个 GeoLocation 的高程字段,它的值默认为 None。
The reason for that is that it can be passed in by the user or if left empty, obtained by a call to google's elevation API.原因是它可以由用户传入,或者如果留空,则通过调用谷歌的海拔 API 获得。
So, I'm trying to use the create function in the serializer to define its value but I'm getting a key error:所以,我试图在序列化程序中使用 create 函数来定义它的值,但我遇到了一个关键错误:
#app/models.py
elevation = models.FloatField(name="Elevation",
max_length=255,
help_text="If known, Add location's sea level height. If not, Leave Empty.",
null=False,
default=None)
#app/serializers.py
from rest_framework.serializers import HyperlinkedModelSerializer
from Project_Level.utils import get_elevation
from .models import KnownLocation
class KnownLocationSerializer(HyperlinkedModelSerializer):
def create(self, validated_data):
if validated_data["Elevation"] is None: # Using if not validated_data["Elevation"] results the same.
validated_data["Elevation"] = get_elevation(validated_data["Latitude"], validated_data["Longitude"])
class Meta:
model = KnownLocation
fields = ('id', 'Name', 'Area', 'Latitude', 'Longitude', 'Elevation')
Error:错误:
KeyError at /knownlocations/
'Elevation'
Exception Location: KnownLocation/serializers.py in create, line 9
elevation = models.FloatField...海拔 = 模型.FloatField ...
fields = ('id', 'Name', 'Area', 'Latitude', 'Longitude', 'Elevation') fields = ('id', 'Name', 'Area', 'Latitude', 'Longitude', 'Elevation')
field names are case-sensitive, elevation != Elevation.字段名称区分大小写,elevation != Elevation。 Try using lowercase only.尝试仅使用小写字母。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.