class Reply(Document): content = fields.StringField(verbose_name=u'内容') creator = fields.GenericReferenceField() #作者 target = fields.GenericReferenceField() #回复目标 creat_time = fields.DateTimeField() #发布时间 is_active = fields.BooleanField(verbose_name=u'可见') def get_reply(self): #得到回复列表 return Reply.objects(target=self)
class Person(Document): name = f.StringField() age = f.IntField(default=30) coffee = f.IntField(db_field='s', default=5) fav_nums = f.ListField(f.IntField()) userid = f.StringField() friends = f.ListField(f.ReferenceField('Person')) wildcard = f.ListField(f.GenericReferenceField()) best_friend = f.ReferenceField('Person') best_blob = f.GenericReferenceField() thought = f.EmbeddedDocumentField('Thought') other_thoughts = f.ListField(f.EmbeddedDocumentField('Thought')) other_attrs = f.DictField()
class Activity(Document): url_number = fields.IntField() name = fields.StringField(verbose_name=u'活动名称') detail = fields.StringField(verbose_name=u'活动详情') creator = fields.GenericReferenceField() # 发起社团 start_time = fields.DateTimeField() finish_time = fields.DateTimeField() place = fields.StringField(verbose_name=u'活动地点') max_student = fields.IntField() # 人数上限 pay = fields.IntField(verbose_name=u'人均花费') who_likes = fields.ListField( fields.ReferenceField(Student, reverse_delete_rule=PULL)) # 喜欢活动的人 who_entered = fields.ListField( fields.ReferenceField(Student, reverse_delete_rule=PULL)) # 参加这个活动的人 clicks = fields.IntField() # 点击数 is_active = fields.BooleanField() def description(self): return self.creator.corporation.name + "发起了" + self.name def is_started(self): # 判断是否已经开始 if self.finish_time < datetime.datetime.now(): return True else: return False def get_reply(self): from reply.models import Reply return Reply.objects(target=self)
class Topic(Document): title = fields.StringField(verbose_name=u'标题') content = fields.StringField(verbose_name=u'内容') url_number = fields.IntField() creator = fields.GenericReferenceField() # 发布人S_G_Card, reverse_delete_rule=DO_NOTHING creat_time = fields.DateTimeField() # 发布时间 update_time = fields.DateTimeField() # 更新时间 update_author = fields.ReferenceField(Student, reverse_delete_rule=DO_NOTHING) #最后回复作者 clicks = fields.IntField() #浏览数 is_active = fields.BooleanField(verbose_name=u'可见') is_locked = fields.BooleanField(verbose_name=u'锁帖') is_top = fields.BooleanField(verbose_name=u'置顶') def get_reply(self): from reply.models import Reply return Reply.objects(target=self)
class GenericReferencingDoc(Document): ref = fields.GenericReferenceField()
class RefFieldsDoc(Document): ref = fields.ReferenceField(ReferencedDoc) dbref = fields.ReferenceField(ReferencedDoc, dbref=True) cached = fields.CachedReferenceField(ReferencedDoc) generic = fields.GenericReferenceField() ref_list = fields.ListField(fields.ReferenceField(ReferencedDoc))
class GenericReferencingModel(Document): generic = me_fields.GenericReferenceField()
class RefFieldsModel(Document): ref = me_fields.ReferenceField(ReferencedModel) dbref = me_fields.ReferenceField(ReferencedModel, dbref=True) cached = me_fields.CachedReferenceField(ReferencedModel) generic = me_fields.GenericReferenceField()
class Broadcast(EmbeddedDocument): object = fields.GenericReferenceField() is_readed = fields.BooleanField()