Почему я получаю ошибку значения в моей функции определения местоположения?

1

Мне нужна ваша помощь, чтобы выяснить мою ошибку в моем коде.

Я пытаюсь автоматически заполнить поля широты/долготы, как только пользователь вводит адрес. Таким образом, на карте поля местоположения будет показано, и оба поля будут автоматически заполнены.

models.py:

from location_field.models.plain import PlainLocationField
class Store(models.Model):
    building = models.ForeignKey(Building, related_name='building', on_delete=models.SET_NULL, blank=True, null=True)
    address = models.TextField(default='Singapore')
    latitude = models.FloatField(validators=[MinValueValidator(-90.0), MaxValueValidator(90.0)])
    longitude = models.FloatField(validators=[MinValueValidator(-180.0), MaxValueValidator(180.0)])
    location = PlainLocationField(based_fields=['address'], zoom=7, null=True)

    @property
    def latitude(self):
        if not self.location:
            return
        try:
            print('Store Location1: ' + str(self.location))
            latitude, _ = self.location.split(',')
        except Exception as e:
            print('Exception1: ' + str(e))
        print("latitude:", latitude)
        return latitude

    @property
    def longitude(self):
        if not self.location:
            return
        try:
            print('Store Location2: ' + str(self.location))
            _, longitude = self.location.split(',')
        except Exception as e:
            print('Exception2: ' + str(e))
        print("longitude:", longitude)
        return longitude

Когда я запускал свой сервер, я видел следующие две печати statements-

Store Location1: 8 SHENTON WAY #43-01 AXA TOWER Singapore
Exception1: not enough values to unpack (expected 2, got 1)

Оператор печати в функциях долготы никогда не печатается. И когда я иду в свой магазин, он показывает следующую ошибку в browser-

File "E:\mysite\models.py", line 216, in latitude
latitude, _ = self.location.split(',')
Exception Type: ValueError
Exception Value:not enough values to unpack (expected 2, got 1)

Может ли кто-нибудь помочь мне узнать точную проблему?

Теги:
python-3.x
django-2.0

1 ответ

2
Лучший ответ

Вы не можете распаковать итерируемый размер один на две переменные. Вот минимальный пример вашей проблемы.

mystr = 'Store Location1: 8 SHENTON WAY #43-01 AXA TOWER Singapore'

latitude, _ = mystr.split(',')

# ValueError: not enough values to unpack (expected 2, got 1)

Обратите внимание, что в вашей строке ввода нет запятой. Поэтому вам необходимо реорганизовать свою логику или обеспечить соответствие ваших данных вверх по течению.

Например, если вы хотите, чтобы location представляло только первый сплит:

latitude = mystr.split(', ', 1)[0]
  • 0
    Спасибо jpp, я понял, это была моя ошибка. Итак, вы можете сказать мне, как я могу изменить свой код функции, чтобы он работал?
  • 0
    @AnalyticsPy, смотрите обновление.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню