2016-11-08 125 views
0

我正在努力在模板中显示我的数组项目。刚开始使用GAE中的实体关系时,我没有在SO上找到合适的解决方案。我必须先在我的处理程序中执行查询。如果是这样,我怎么会在逻辑上挣扎。数据存储一对多Google App Engine

数据存储Project实体例如显示

enter image description here

数据存储Employees实体例如显示

enter image description here

Project.py

class Project(ndb.Model): 
    projectID = ndb.IntegerProperty(required=True) 
    title = ndb.StringProperty(required=True) 
    description = ndb.StringProperty(required=True) 
    startAt = ndb.DateTimeProperty(indexed=True) 
    endAt = ndb.DateTimeProperty() 
    isFullDay = ndb.BooleanProperty() 
    days = ndb.KeyProperty(kind='CompanyDay', repeated=True) 
    employees = ndb.KeyProperty(kind='Employees', repeated=True) 
    client = ndb.KeyProperty(kind='Client') 

class Employees(ndb.Model): 
    name = ndb.StringProperty() 
    role = ndb.StringProperty() 

模板

data是从后端获取通过角的http服务

<md-content class="md-padding projects" layout="row" layout-wrap> 
     <md-card ng-repeat="data in controller.projects" flex="20" ng-click="editProject(data)"> 
      <img src="" alt=""> 
      <md-card-content> 
       <div class="project-info"> 
        <h2 class="md-title">{{ data.title }}</h2> 
        <p>{{ data.description }}</p> 
        <p>{{ data.employees }}</p> 

       </div> 
      </md-card-content> 
     </md-card> 
    </md-content> 

Python代码来响应/评论

class commentsJsonHandler(webapp2.RequestHandler): 
@classmethod 
def route(cls): 
    """ 
    name: index, template:/
    """ 
    return webapp2.Route('/comments', handler=cls, name='_commments_') 

def get(self): 
    projects = Project.query() 

    def date_handler(obj): 
     print obj 
     if isinstance(obj, datetime): 
      return obj.isoformat() 
     else: 
      return str(obj) 

    self.response.out.write(json.dumps([dict(proj.to_dict(), **dict(id=proj.key.id())) for proj in projects], default=date_handler)) 

从角 - 代码,从服务器

var vm = this; 
    vm.projects = []; 
    $http.get('/comments') 
     .then(function(result) { 
      console.log(result); 
      vm.projects = result.data; 
     }); 

显示员工从数据存储要求。

enter image description here

+0

请不要张贴代码的图片。 –

+0

另外,您需要实际发布检索数据的代码。 –

+0

编辑帖子以角度包含服务器获取代码。 –

回答

2

你可以改变你date_handler处理ndb.Key正确呈现您的员工集合在返回的JSON

def date_handler(obj): 
    print obj 
    if isinstance(obj, datetime): 
     return obj.isoformat() 
    elif isinstance(obj, ndb.Key): 
     return obj.get().to_dict() 
    else: 
     return str(obj) 

你可能想改变这个方法的名称,因为它是不只是在做date_handling

+0

完美谢谢。现在工作! –

相关问题