2016-11-23 6 views
0

Ich entwickle eine angularjs App auf Google App Engine, aber ich habe ein Problem mit einer meiner KeyProperty Felder client.Python: [Objekt Objekt] erscheint auf Seite Feld

Dies ist, wie das KeyProperty Feld angezeigt wird (Die anderen nicht KeyProperty Elemente werden angezeigt);

NB: Post ist 200 OK

enter image description here

model.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() 
    client = ndb.KeyProperty(kind='Client') 

class Client(ndb.Model): 
    name = ndb.StringProperty() 

home.html Element

 <div class="form-group"> 
      <label>Client : </label> 
      <input type="text" ng-model="Project.Client" class="form-control"/> 
     </div> 

In handler.py

def post(self): 
    r = json.loads(self.request.body) 
    print str(r) 

    cl = Client(name=r['Client']).put() 
    client_key = cl 

    g = Project(projectID=int(r['ProjectID']), 
     client=client_key, 
     description=r['Description'], 
     title=r['Title'], 
     startAt=datetime.strptime(r['StartAt'], '%Y-%m-%dT%H:%M:%S.%fZ'), 
     endAt=datetime.strptime(r['EndAt'], '%Y-%m-%dT%H:%M:%S.%fZ')) 

    project_key = g.put() 

Winkel

eventClick: function (project) { 
       $scope.showSelected = true; 

       var fromDate = moment(project.start).format('DD/MM/YYYY LT'); 
       var endDate = moment(project.end).format('DD/MM/YYYY LT'); 

       $scope.Project = { 
        ProjectID : project.projectID, 
        Client : project.client, 
        Title : project.title, 
        Description: project.description, 
        Employees: project.employees, 
        StartAt : fromDate, 
        EndAt : endDate, 
        IsFullDay : false 
       } 
       $scope.ShowModal() 
      }, 

ich immer noch meine Art und Weise lerneKeyProperties zu handhaben. Danke für die Hilfe

UPDATE

Dies ist der Fehler, den ich immer bin, wenn ich ‚qwert‘ im Client-Feld eingeben;

enter image description here

+1

versuchen müssen Versuchen Sie zu "console.log" dieses Objekt und sehen, welche Eigenschaften es hat. Was Sie wollen, ist wahrscheinlich eine seiner Eigenschaften. – lucasnadalutti

+1

'[Objekt] bedeutet, dass Sie ein komplexes Objekt in Händen haben. Versuchen Sie stattdessen, Ihren Code in 'ng-model =" Project.Client.name "' 'zu ändern. –

+0

@FabioMenegazzo Ja, das hat geholfen (Feld wird richtig angezeigt), als ich hinzugefügt habe, änderte ich zu 'ng-model = ng-model =" Project.Client.name "'. Nachdem ich jedoch '.name' hinzugefügt habe, wenn ich ein neues _post_ versuche, bringt es mich zum/Edit Endpoint Handler statt/save Handler –

Antwort

1

ich spreche in Ihrer Python-Code. Das Fehlerprotokoll sollte Ihnen sagen, welche Zeile Ihres Codes eine Zeichenfolge erwartet. Das ist, wo Sie die .name

+0

Ich habe den Fehler im obigen Screenshot (Update) angegeben. Der Fehler kommt von 'cl = Client (name = r ['Client']). Put()' .Ich habe versucht 'cl = Client (name = r ['Client.name']). Put()' but Das gibt mir einen Schlüsselfehler. –

+0

Ich habe tatsächlich herumgewirbelt und 'cl = Client (name = r ['Client'] ['name']). Put()' funktioniert! Vielen Dank –