2016-11-08 122 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

完美謝謝。現在工作! –

相關問題