我有以下python模块:
from google.appengine.ext import db
from user import User
class Post(db.Model):
content = db.TextProperty()
time = db.DateTimeProperty(auto_now_add=True)
user = db.ReferenceProperty(User)
topic = db.ReferenceProperty(Topic)
class Forum(db.Model):
parent_ = db.SelfReferenceProperty()
name = db.StringProperty()
description = db.StringProperty()
topics_count = db.IntegerProperty(default=0)
posts_count = db.IntegerProperty(default=0)
last_post = db.ReferenceProperty(Post)
class Topic(db.Model):
forum = db.ReferenceProperty(Forum)
title = db.StringProperty()
replies_count = db.IntegerProperty(default=0)
views = db.IntegerProperty(default=0)
time = db.DateTimeProperty(auto_now_add=True)
user = db.ReferenceProperty(User)
last_post = db.ReferenceProperty(Post)
这不起作用,因为我在Post
类中使用了Topic
。我读了this solution并解决了循环依赖问题。生成的模块如下:
但是现在我有另一个问题。appengine创建Post
表,但它没有topic列。我怎样才能解决这个问题?在
这种方法不能正常工作,因为
db.Model
有一个元类,在创建类时,它对db属性列表进行初始化。由于您的属性当时不在那里,因此将不会对其应用必要的初始化。在您可能需要考虑切换到NDB,后者通过对其中一个键属性使用字符串名称来支持循环引用。在
相关问题 更多 >
编程相关推荐