Получение динамических имен коллекций в mongoengine

#python #mongoengine

#python #mongoengine

Вопрос:

Вот сенарио. У меня есть модель под названием Permission. Давайте предположим, что это выглядит так:

 class Permission(Document):
    meta = {'collection': 'permission'}
    permission = DictField()
    owner = ReferenceField('user')
  

Это наследуется от класса Document в mongoengine. Таким образом, когда я сохраняю экземпляр этого, в базе данных автоматически создается коллекция с именем permission.

Я хочу иметь возможность динамически изменять имя коллекции. Например, если у меня была модель контактов и я хотел сохранить разрешение для модели контактов, я не хочу, чтобы оно попадало в коллекцию разрешений, а сохранялось в отдельной коллекции под названием contact_permission.

Я использовал ветку feature/ dynamic_collection_naming для mongoengine. Я не могу понять, как заставить это работать. Я пробовал это:

 p = Permission()
...
p.meta['collection'] = 'contact_permission'
p.save()
  

Но это не работает. Не могли бы вы мне помочь, пожалуйста.

Ответ №1:

Это не предназначенный API для динамического именования коллекций. Быстрый поиск по коммит в упомянутой вами ветке показывает этот коммит, который показывает, как его использовать:

https://github.com/hmarr/mongoengine/commit/c62b6321adaba6c3eb54ce2dc2c1bd3069568399

Комментарии:

1. Спасибо, приношу свои извинения за то, что не просмотрел коммиты.