如何从另一个引用两次相同的模型?

| 以下代码
class Translation(db.Model):
    origin = db.ReferenceProperty(Expression, required=True)
    target = db.ReferenceProperty(Expression, required=True)
产生以下错误:   追溯(最近一次通话):     _HandleRequest中的第4053行,文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”       self._Dispatch(调度程序,self.rfile,outfile,env_dict)     _Dispatch中的文件“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,行3977       base_env_dict = env_dict)     文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,在Dispatch中,第588行       base_env_dict = base_env_dict)     文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,在Dispatch中,行3050       self._module_dict)     在ExecuteCGI中的文件“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,       reset_modules = exec_script(handler_path,cgi_path,钩子)     在ExecuteOrImportScript中,文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,行       script_module.dict中的exec module_code     文件\“ D:\\ svn \\ language \\ Web \\ src \\ controller.py \”,第5行,在       从模型导入*     文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,以装饰       return func(self,* args,** kwargs)     在load_module中,文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,第2450行       返回self.FindAndLoadModule(子模块,全名,搜索路径)     文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,以装饰       return func(self,* args,** kwargs)     FindAndLoadModule中的文件“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,       描述)     文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,以装饰       return func(self,* args,** kwargs)     在LoadModuleRestricted中的文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ tools \\ dev_appserver.py \”,行2282       描述)     文件\“ D:\\ svn \\ language \\ Web \\ src \\ model.py \”,第24行,在       类Translation(db.Model):     文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ ext \\ db__init __。py \”,init行       _initialize_properties(CLS,名称,基数,DCT)     _initialize_properties中的第415行,文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ ext \\ db__init __。py \”       attr.property_config(model_class,attr_name)     在Property_config中的第3461行,文件\“ C:\\ Program Files(x86)\\ Google \\ google_appengine \\ google \\ appengine \\ ext \\ db__init __。py \”       self.collection_name))   DuplicatePropertyError:类表达式已经具有属性translation_set 如何规避此限制?     
已邀请:
class Translation(db.Model):
    origin = db.ReferenceProperty(Expression, required=True, collection_name=\'translation_origins\')
    target = db.ReferenceProperty(Expression, required=True, collection_name=\'translation_targets\')
    
给出不同的集合名称
class Translation(db.Model):
    origin = db.ReferenceProperty(Expression, required=True,collection_name=\'origin_translation_set\')
    target = db.ReferenceProperty(Expression, required=True,collection_name=\'target_translation_set\')
默认情况下,每个db.ReferenceProperty都会在引用的模型中创建一个名为referencedmodelname_set的集合。 例如:
class OwnedCar(db.Model):
   brand  =  db.StringProperty(required=True)
   owner  =  db.ReferenceProperty(Human, required=True)

class Human(db.Model):
    name    = db.StringProperty(required=True)
    drives  = db.ReferenceProperty(reference_class=Car)
默认情况下,每个人类都将拥有一个默认名为ownercar_set的属性。如果您两次引用同一模型,则会产生collection_name冲突。因此,您应该添加collection_name来区分集合。 在这里更多参考     
为它们指定不同的集合名称:
class Translation(db.Model):
    origin = db.ReferenceProperty(Expression, required=True,
                                  collection_name=\'origin_translation_set\')
    target = db.ReferenceProperty(Expression, required=True,
                                  collection_name=\'target_translation_set\')
    

要回复问题请先登录注册