2013-10-06 45 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.請不要在=之間使用多個空格