2015-05-05 1 views
1

Я пытаюсь создать новый документ и сохранить его в базе данных. База данных в Mongo была создана автоматически, но записи не сохраняются. То, что я пытаюсь сделать в моем коде является следующее:Использование mongoengine в Django. Не удается сохранить экземпляр документа в базу данных

lesson = Lesson() 
lesson.group = Group(group_name='KP-32') 
lesson.teacher = Teacher(teacher_name='Vasia') 
lesson.room = Room(room_number=32, building_number=323) 
lesson.subject = Subject(subject_code=03321, subject_name='Math', hours=33) 
lesson.save() 
ls = [] 
for lesson in Lesson.objects: 
    ls.append(lesson) 

Но как только я пытаюсь показать Ls, я получаю на мой взгляд (отображение Ls) только: идентификатор учителя по данной группе номеров (имена ссылки ???), и ничего не хранится в db. Надеюсь услышать какое-то решение для моей проблемы и спасибо заранее.

Настройки

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.dummy', 
    } 
} 
mongoengine.connect('jack', host='127.0.0.1', port=27017) 

AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend', 
) 
SESSION_ENGINE = 'mongoengine.django.sessions' 

Модели

from mongoengine import * 

    class Room(EmbeddedDocument): 
     room_number = IntField(default=0) 
     building_number = IntField(default=0) 
     capacity = IntField(default=0, required=False) 

     def __unicode__(self): 
      return smart_unicode("Room #%d" % self.room_number) 


    class Teacher(EmbeddedDocument): 
     teacher_name = StringField(max_length=60) 
     phone = StringField(max_length=15, required=False) 
     email = StringField(required=False) 

     def __unicode__(self): 
      return smart_unicode(self.teacher_name) 


    class Subject(EmbeddedDocument): 
     subject_code = IntField() 
     subject_name = StringField(max_length=60) 
     hours = IntField(required=False) 

     def __unicode__(self): 
      return smart_unicode(self.subject_name) 


    class Group(EmbeddedDocument): 
     group_name = StringField(max_length=20) 
     specialization = StringField(max_length=60, required=False) 
     student_count = IntField(required=False) 

     def __unicode__(self): 
      return smart_unicode(self.group_name) 


    class Lesson(Document): 
     subject = EmbeddedDocumentField(Subject) 
     teacher = EmbeddedDocumentField(Teacher) 
     group = EmbeddedDocumentField(Group) 
     room = EmbeddedDocumentField(Room) 
     attendance = IntField() 

     def __unicode__(self): 
      return smart_unicode("Lesson #%d" % self.id) 

ответ

0

База данных создается, когда эта линия выполнена

mongoengine.connect('jack', host='127.0.0.1', port=27017) 

Также он работает для меня.

Вы можете просто напечатать вывод этого для меня:

ls[0].__dict__ 
+0

спасибо за ваш ответ. Полагаю, я просто не мог сформировать правильный запрос :) Теперь все работает! – Eugene