我有2节课 一个看起来像这样:
class Feed(db.Model):
bid = db.StringProperty()
title = db.StringProperty()
url = db.StringProperty()
datecreated = db.DateProperty(auto_now_add=True)
voice = db.StringProperty()
lastchecked = db.DateProperty(auto_now=True)
language = db.StringProperty()
active = db.BooleanProperty()
posts = db.ListProperty(db.Key)
另一个看起来像这样:
class Post(db.Model):
title = db.StringProperty()
postdate = db.DateTimeProperty()
author = db.StringProperty()
body = db.TextProperty()
link = db.LinkProperty()
hasmp3 = db.BooleanProperty()
mp3location = db.StringProperty()
processed = db.BooleanProperty()
voice = db.StringProperty()
length = db.FloatProperty()
inprocess = db.BooleanProperty()
haspict = db.BooleanProperty()
pictures = db.ListProperty(db.Key)
我正在尝试通过附加这样的帖子来更新Feed:
blogid = cgi.escape(self.request.get('bid'))
postid = cgi.escape(self.request.get('pid'))
blog = Feed.get_by_key_name(blogid)
post = Post.get_by_key_name(postid)
if post.key() not in blog.posts:
blog.posts.append(post.key())
blog.put()
当我试图用博文信息'放'博客时,python不喜欢它并告诉我
AttributeError: 'Feed' object has no attribute 'posts'
我之所以感到困惑的原因是因为我在向'UserClass'添加'Feed'时几乎有了确切的逻辑,其中'UserClass'将'Feeds'指定为ListProperty,其方式与'Feed'相同有一个'Post'被指定为ListProperty。
这是我的意思的一个例子:
class UserClass(db.Model):
synccode = db.StringProperty()
firstname = db.StringProperty()
lastname = db.StringProperty()
address = db.StringProperty()
address2 = db.StringProperty()
city = db.StringProperty()
state = db.StringProperty()
zipcode = db.StringProperty()
emailaddress = db.StringProperty()
password = db.StringProperty()
mobile = db.StringProperty()
is_authenticated = db.BooleanProperty()
groupid = db.StringProperty()
mobilesynched = db.BooleanProperty()
devicemodel = db.StringProperty()
isatmoscast = db.BooleanProperty()
registerdate = db.DateProperty(auto_now_add=True)
pack = db.StringProperty()
personalcontact = db.BooleanProperty()
lastlogin = db.DateProperty(auto_now_add=True)
isactive = db.BooleanProperty()
feeds = db.ListProperty(db.Key)
这很好用:
if blog.key() not in user.feeds:
user.feeds.append(blog.key())
user.put()
这会引发错误:
if post.key() not in blog.posts:
blog.posts.append(post.key())
blog.put()
任何帮助都将不胜感激。
答案 0 :(得分:5)
我把你的模特粘贴在“hello world”main.py中;然后在本地SDK上运行它,我进入交互式控制台:
import main as m
p = m.Post()
p.put()
f = m.Feed()
f.put()
if p.key() not in f.posts:
f.posts.append(p.key())
f.put()
print f.posts
我正如预期的那样,在右侧的结果窗口中看到:
[datastore_types.Key.from_path(u'Post', 7, _app=u'helow')]
换句话说,似乎无法在简单的情况下重现您报告的问题。
请尽可能简单地showstheproblem.py
, (即,没有重现问题不是必不可少的代码!),这会显示问题,并编辑您的问题以添加该问题代码(减去模型,我们已经看过那些,当然绝大多数字段与这个问题完全无关)。
这始终是报告疑似错误或获取帮助的正确方法;通常情况下,你会发现在削减你的代码副本以获得“最小可能的问题再现”的过程中......问题以一种向你显示错误的方式消失你的代码首先 - 所以你实际上甚至不需要寻求帮助或报告库中不存在的错误! - )