gpt4 book ai didi

python - ReferenceProperty 是否有可能不生成反向引用的原因?

转载 作者:行者123 更新时间:2023-11-30 23:58:12 25 4
gpt4 key购买 nike

在我当前的项目中,我有两个模型,版本和评论。两者之间是一对多的关系;每个Version可以有很多Comment,Comment模型有一个ReferenceProperty来记录它属于哪个Version:

class Comment(db.Model):
version = db.ReferenceProperty(version.Version, collection_name="comments")

问题是 Version 的实例没有像我预期的那样获得comments 属性。 According to the docs ,我应该在每个 Version 上获得一个 automagical 属性,该属性是一个查询,返回所有将其版本设置为相关 Version 实例的 Comment 实例。似乎不适用于我的代码。

我知道 ReferenceProperty 设置正确,因为我可以使用此查询获取评论:

        comments = comment.Comment.all().filter('version = ', self).order('-added_on').fetch(500)

但这并不:

        comments = self.comments.order('-added_on').fetch(500)

它崩溃了,因为 self 没有属性注释。

下面包含两个模型的完整代码。有谁知道为什么没有为我的 Verson 实例提供反向引用属性?

来自版本.py:

from google.appengine.ext import db
import piece

class Version(db.Model):
parent_piece = db.ReferenceProperty(piece.Piece, collection_name="versions")
note = db.TextProperty()
content = db.TextProperty()
published_on = db.DateProperty(auto_now_add=True)

def add_comment(self, member, content):
import comment

new_comment = None
try:
new_comment = comment.Comment()
new_comment.version = self
new_comment.author = member
new_comment.author_moniker = member.moniker
new_comment.content = content

new_comment.put()
except:
# TODO: handle datastore exceptions here
pass

return new_comment

def get_comments(self):
import comment

comments = None
try:
comments = comment.Comment.all().filter('version = ', self).order('-added_on').fetch(500)
except:
pass

来自comment.py:

import version
import member
from google.appengine.ext import db

class Comment(db.Model):
version = db.ReferenceProperty(version.Version, collection_name="comments")
author = db.ReferenceProperty(member.Member)
author_moniker = db.StringProperty()
author_thumbnail_avatar_url = db.StringProperty()
content = db.TextProperty()
added_on = db.DateProperty(auto_now_add=True)

最佳答案

看起来您正在用自己的属性注释覆盖名为 comments 的自动属性,在这一行中:

comments = self.comments.order('-added_on').fetch(500)

如果将 Comment 模型中的 collection_name 参数更改为“comments_set”,然后将上面的行更改为:

comments = self.comments_set.order('-added_on').fetch(500)

关于python - ReferenceProperty 是否有可能不生成反向引用的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3240505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com