Dangjo с Mongodb, пробелы в имени поля: FieldError: Невозможно преобразовать ключевое слово '' в поле
Недолгое пребывание на сайте в поисках небольшого руководства. Я начал небольшой проект, чтобы немного автоматизировать повседневную работу. Я выбрал Python и с этого момента заинтересовался программированием. Около месяца назад я решил отслеживать происходящее и подключил экземпляр MongoDB к автоматизированному процессу. Перехожу к графическому интерфейсу с использованием Django. Я столкнулся с проблемой в одном из моих представлений, и я подозреваю, что ответ, скорее всего, будет заключаться в удалении пробелов из названий полей, но я подумал, что спрошу здесь, как град Мэри :)
При попытке применить фильтр к моим объектам возвращается следующая ошибка:
Error:
django.core.exceptions.FieldError: Cannot resolve keyword '' into field. Choices are: NP Title ID, Product Code, Product Type, _id
Модель проблемы и вид ниже:
Model:
class Railway_Products(models.Model):
_id = models.ObjectIdField(name='_id', editable=False)
np_title_id = models.CharField(name='NP Title ID', max_length=15)
product_type = models.CharField(name='Product Type', max_length=15)
product_code = models.CharField(name='Product Code', max_length=15)
class Meta:
db_table = "Products"
verbose_name_plural = "products"
View:
class Railway_Products_ListView(generic.ListView):
model = Railway_Products
context_object_name = 'product_list'
queryset = model.objects.filter(name='NP Title ID',__icontains='PPSA')
Я знаю, что проблема заключается в этой строке:
queryset = model.objects.filter(name='NP Title ID',__icontains='PPSA')
и имя = не нравится '' или просто не принимается. Я пытался присвоить 'NP Title ID' переменной. В результате чего появляется сообщение Cannot resolve variablename в поле. В качестве быстрого теста я переименовал поле в MongoDB, модели и представлении в NPTitleID. Как показано ниже:
queryset = model.objects.all().filter(NPTitleID__icontains='PPSA')
, что работает. Однако я хотел бы избежать переименования имен полей в коллекциях, поскольку все они были заданы с пробелами. Есть ли способ заставить это работать с пробелами?
Django не поддерживает MongoDB для своего ORM по умолчанию, так что это немного выстрел в темноте.
Если ваш адаптер Django/MongoDB работает так, как Django работает по умолчанию, вы можете установить db_column
на каждом поле то, что на самом деле является полем в базе данных, например
np_title_id = models.CharField(
max_length=15,
db_column='NP Title ID',
)