#django #database #postgresql #ubuntu
Вопрос:
Моя модель такая.
class Seller(models.Model):
supplierId = models.IntegerField('Supplier ID', primary_key=True)
supplierName = models.CharField('Поставщик', max_length=255, null=True, blank=True)
inn = models.CharField('ИНН', max_length=255, null=True, blank=True)
ogrn = models.CharField('ОГРН', max_length=255, null=True, blank=True)
legalAddress = models.CharField('Юридический адрес', max_length=512, null=True, blank=True)
I have 2 records with the same supplierName=’Смирнова Ольга Александровна’.
sellers = Seller.objects.filter(supplierName__icontains='Смирнова Ольга Александровна')
print(sellers.count()) # return 1
sellers = Seller.objects.filter(supplierName__contains='Смирнова Ольга Александровна')
print(sellers.count()) # return 2
sellers = Seller.objects.filter(supplierName='Смирнова Ольга Александровна')
print(sellers.count()) # return 2
Я также пытаюсь использовать поиск по имени поставщика__, но он также возвращает не обычные данные.
значки возвращают неправильные данные не только в этом примере.
Я попытался создать ту же базу данных postgresql на своем локальном компьютере с Windows с той же моделью и записями в ней. И это работает правильно. База данных с проблемой работает на ubuntu 20.04
Что я могу с этим сделать? Мне это нужно для правильного поиска на моем сайте.
Комментарии:
1. Скорее всего, вы установили неправильные параметры сортировки для своей базы данных.
2. @WillemVanOnsem Спасибо тебе! Проблема заключалась в настройках сортировки.
Ответ №1:
Проблема была в настройках сортировки
Я удаляю и снова создаю кластер postgresql с новыми параметрами сортировки. Не создав кластер, он не увидел русскую кодировку.
dpkg-reconfigure locales
# install your locales
pg_dropcluster --stop 14 main
# It will delete your cluster with all data, so backup it before
pg_createcluster --locale ru_RU.UTF-8 --start 14 main
# 14 - your postgres veriosn, main - your cluster name (main by default)
Также вы можете изменить db_collation для поля в django, если локаль присутствует в psql l