Django остальные рамки, не используйте ни один в поле модели - PullRequest
0 голосов
/ 29 марта 2020

У меня есть Django API остального каркаса. В одной из моделей есть поле для повышения уровня GeoLocation, которое по умолчанию имеет значение None.

Причина в том, что его можно передать пользователем или, если он оставлен пустым, получен вызовом Google Повышение API.

Итак, я пытаюсь использовать функцию создания в сериализаторе, чтобы определить его значение, но я получаю ошибку ключа :

#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')

Ошибка:

KeyError at /knownlocations/
'Elevation'
Exception Location: KnownLocation/serializers.py in create, line 9

1 Ответ

1 голос
/ 29 марта 2020

elevation = models.FloatField ...

fields = ('id', 'Name', 'Area', 'Latitude', 'Longitude', 'Elevation')

имена полей чувствительны к регистру, высота! = Высота. Попробуйте использовать только строчные буквы.

...