如何在不存在引用的情况下使用referenceProperty创建模型的实体?
我有两个模型班级和学生。每个团队实体都有不止一个用户实体,我认为“一对多”是一个合适的模型。我这样的代码:如何在不存在引用的情况下使用referenceProperty创建模型的实体?
class Team(db.Model):     teamNmae = db.StringProperty(required=True) 
    teamID = db.IntegerProperty(required=True) 
class Users(db.Model): 
    name = db.StringProperty(required=True) 
    reference = db.ReferenceProperty(Team,collection_name=teamMembers) 
按照this document,我需要先创建一个团队的实体,然后创建它的参考值设置为这支球队实体用户。但是,这里是问题所在,我想先创建用户,然后用户可以创建一个团队。那么,当我创建一个没有团队存在的用户时,如何设置参考?
EDIT1:
我写一些简单的代码来测试,如果我可以在不创建其参考实体创建一个实体。
_author__ = 'Steven_yang' import os 
import webapp2 
from google.appengine.ext import db 
from google.appengine.ext.webapp import template 
defaultStu = [ 
    'qingWANG', 
    'stevenYANG', 
    'jingZHU', 
    'conghuiHE', 
    'lianDUAN', 
    'xinHAO' 
] 
class Students(db.Model): 
    #reference = db.ReferenceProperty(Team,collection_name='teamMember',required=False) 
    name = db.StringProperty(required=True) 
class Team(db.Model): 
    teamName = db.StringProperty(required=True) 
    teamID = db.IntegerProperty(required=True) 
def createStu(): 
    stu_count = Students.all().count(1) 
    if stu_count == 0: 
     for stu in defaultStu: 
      newStu = Students(name = stu) 
      newStu.put() 
class testReferenceHandler(webapp2.RequestHandler): 
    def get(self): 
     createStu() 
     self.render_page() 
    def render_page(self): 
     stus = Students.all().fetch(10) 
     templateValues={} 
     templateValues['stus'] = stus 
     form = os.path.join(os.path.dirname(__file__),'template/testref.html') 
     renderForm = template.render(form,templateValues) 
     self.response.out.write(renderForm) 
app = webapp2.WSGIApplication([('/testref',testReferenceHandler)],debug=True) 
HTML文件是:
<body>     {% for s in stus%} 
    <div>{{s.name}}</div> 
    {% endfor%} 
</body> 
</html> 
当我注释掉的ReferenceProperty线,一切都很好。当我添加ReferenceProperty行时,我得到一个服务器错误。所以,我不能创建一个实体没有之前创建的参考?
回答:
在创建User实例时,是否尝试将reference设置为Team型号为None?
也改变了最后一行的代码片段:
reference = db.ReferenceProperty(Team,required=False) 即添加required=False。这是this answer中建议的内容。
以上是 如何在不存在引用的情况下使用referenceProperty创建模型的实体? 的全部内容, 来源链接: utcz.com/qa/267254.html







