Как я могу сохранить строку, отличную от Юникода, в базе данных моего приложения Django?

Я пытаюсь получить доступ к полю в views.py, чтобы выполнить над ним операцию, которая рассчитает его расстояние от точки, введенной пользователем (используя geopy). Ввод должен быть простой строкой, но в настоящее время он хранится в моей базе данных как: u'(lat, lng)', который не нравится геопии.

Как я могу хранить информацию в моей базе данных в правильном формате (например, (лат, долго)). Координаты изначально вводятся в этом формате.

Заранее спасибо, приносим извинения за неправильную терминологию, новичок в этом и самоучка.


person Matt Parrilla    schedule 26.04.2011    source источник


Ответы (2)


Используйте django-раздражающий

class MyModel(models.Model):
    ...
    lat_lng = JsonField()

И хранить:

MyModel.objects.create(lat_lng={'data': (lat, lng)}, ...)

И используйте:

my_model_object.lat_lng['data']
person satels    schedule 26.04.2011

Вы говорите, что фактическое значение, хранящееся в таблице, равно u'(lat, lng)'? Преобразуете ли вы свою строку в другое представление перед ее сохранением? Это не выглядит правильно.

При необходимости вы можете изменить кодировку, которую использует таблица. Прочитайте об этом здесь: Как установить кодировка для столбцов char таблиц в django?

Также вы можете encode/decode использовать строки с определенной кодировкой перед их использованием в python: В чем разница между кодированием/декодированием?

person Max    schedule 26.04.2011
comment
Я не совсем уверен, что вы имеете в виду, преобразуя свою строку в другое представление перед ее сохранением, хотя это может иметь место. Вот что у меня получилось class Place(models.Model): coordinates = models.CharField(max_length=60) def save(self, *args, **kwargs): self.coordinates = Location(self.zipcode, self.street) super(Venue, self).save(*args, **kwargs) Затем я пытаюсь получить доступ к координатам в views.py (для использования в методе, который вычисляет расстояние между двумя наборами координат), но получаю u'(широта, долгота) в качестве вывода - person Matt Parrilla; 27.04.2011