2013-03-19 47 views
1

我正在使用gae-boilerplate(webapp2和jinja2)。我的模型如下所示:如何通过谷歌应用引擎引用实体使用NDB

class Location(ndb.Model): 
    x = ndb.FloatProperty() 
    y = ndb.FloatProperty() 

class Criterium(polymodel.PolyModel): 
    name = ndb.StringProperty(required=True) 
    user = ndb.KeyProperty(kind='User') 
    priority = ndb.IntegerProperty(required=True) 

class Work(Criterium): 
    location = ndb.StructuredProperty(Location) 

class Friend(Criterium): 
    location = ndb.StructuredProperty(Location) 

我有一个来自Criterium模型的所有记录的表。我想在那里添加一个删除链接,但我不知道为了引用特定的实体而使用它来传递什么参数。我的处理程序是这样的:

def get(self): 
    criteria = Work.query().order(-Criterium.priority, Criterium.name) 
    self.view.list_columns = [('name', 'Name'), 
         ('priority', 'Priority'), 
         ('className', 'Type')] 
    self.view.criteria = criteria 
    self.view.count = criteria.count() 
    params={} 
    self.render_template('list.html', **params) 

似乎是一个简单的问题,却一直在挣扎了一整天...提前感谢!

+0

单数标准是'标准',而不是'标准'。 – 2013-03-19 16:27:29

+0

谢谢。不知何故,我不喜欢“标准”这个词。 – 2013-03-19 17:35:19

回答

1

那么id的对象呢?
那就是Criterium模型中该对象的唯一标识符。

上循环的条件的实体时:

for criterum in criteria: 
    criterum.key.id() 
+0

谢谢,这似乎是工作。 我现在在我的html中使用这个: 这是安全吗? – 2013-03-19 16:24:08

+0

不知道它有多安全,但这是我如何删除订单项 – 2013-03-19 17:05:13

+0

我想最好将密钥传回工作 - 删除? – 2013-03-19 17:09:10

0

见下文

从google.appengine.ext进口NDB例如

类用户(ndb.Model):

created = ndb.DateTimeProperty(auto_now_add = True) 
firstName = ndb.StringProperty(required = True) 
lastName = ndb.StringProperty(required = True) 
email = ndb.StringProperty(required = True) 
pwHash = ndb.StringProperty(required = True) 

@classmethod 
def byEmail(cls, email): 
    u = cls.query(cls.email == email).get() 
    return u 

@classmethod 
def register(cls, firstname, lastname, email, password): 
    pwhash = utils.makePwHash(email, password) 
    return User(firstName=firstname, 
     lastName=lastname, 
     email=email, 
     pwHash=pwhash) 

@classmethod 
def login(cls, email, password): 
    u = User.byEmail(email) 
    if u and utils.validPW(email, password, u.pwHash): 
     return u