2013-10-06 44 views
0

这是我models.py

from mongoengine import * 

class Venue(Document): 
    location_id  = StringField(required=True) 
    name   = StringField(required=True) 
    latitude  = FloatField(required=True) 
    longitude  = FloatField(required=True) 
    address   = StringField() 
    postal_code  = StringField() 
    city   = StringField() 
    county   = StringField() 
    country_code = StringField() 
    events   = ListField() 

    class Event(Document): 
     title   = StringField(required=True) 
     description  = StringField(required=True) 
     website   = StringField() 
     start_date  = DateTimeField(required=True) 
     start_time  = DateTimeField(required=True) 
     end_date  = DateTimeField(required=True) 
     end_time  = DateTimeField(required=True) 

显然每个Venue有很多Event

我怎么能推的Event模型到我的MongoDB在列表Venue模型events假设目标是基于location_id场的结束?

例如,在pymongo我会用:

db.venue.update({ 'location_id': id }, 
     { '$addToSet' :{ 'events' : { 'title': title, 
             'website' : website, 
             'description' : description, 
             'start_date' : start_date, 
             'start_time' : start_time, 
             'end_date' : end_date, 
             'end_time' : end_time 
            } 
         } 
    }) 

如果你有一个更优化的结构,请随时提出这样。

回答

0

也许使用ReferenceFieldListField

class Venue(Document): 
    location_id = StringField(required=True) 
    name = StringField(required=True) 
    latitude = FloatField(required=True) 
    longitude = FloatField(required=True) 
    address = StringField() 
    postal_code = StringField() 
    city = StringField() 
    county = StringField() 
    country_code = StringField() 
    events = ListField(ReferenceField('Event'), default=[]) 

class Event(Document): 
    title = StringField(required=True) 
    description = StringField(required=True) 
    website = StringField() 
    start_date = DateTimeField(required=True) 
    start_time = DateTimeField(required=True) 
    end_date = DateTimeField(required=True) 
    end_time = DateTimeField(required=True) 

,然后就Venue().events.append(Event())应帮助吗?

P.S.请不要在=之间使用多个空格