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',
)
Вернуться на верх