Мне трудно переносить свои модели из стандартного Django orm с MySQL на mongoengine-odm.Подсчет mongoengine Элементы ListField
У меня есть следующая модель, которая отлично работает в старой структуре:
class Place(Document):
name = StringField()
acronym = StringField()
parent = ReferenceField('self')
hierarchy = ListField(ReferenceField('self'))
hierarchy_size = IntField()
@classmethod
def preSave(instance, sender, **kwargs):
instance.hierarchy_size = len(instance.hierarchy)
signals.pre_save.connect(Place.preSave, sender=Place)
Но при работе с новым mongoengine, я столкнулся с проблемами доступа к объектам иерархии размера так, как я делал до того , Прием:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/awesome_user/workspace/awesome_project/project/models.py", line 728, in importPlacesFromMySQL
myCountry.save()
File "/Users/awesome_user/workspace/awesome_project/site_env/lib/python2.7/site-packages/mongoengine/document.py", line 220, in save
signals.pre_save.send(self.__class__, document=self)
File "/Users/awesome_user/workspace/awesome_project/site_env/lib/python2.7/site-packages/blinker/base.py", line 267, in send
for receiver in self.receivers_for(sender)]
File "/Users/awesome_user/workspace/awesome_project/project/models.py", line 804, in preSave
instance.hierarchy_size = len(instance.hierarchy)
TypeError: object of type 'ListField' has no len()
Кто-нибудь знает, как получить доступ к свойствам экземпляра, как длины в моем случае?
Выполняется ли len (list (instance.hierarchy)) '? – alecxe
Нет, он возвращает -> TypeError: объект ListField не является итерабельным –