【发布时间】:2013-12-09 19:07:10
【问题描述】:
我有这种实体类型Book(ndb.Model):
class Book(ndb.Model):
title = ndb.StringProperty(required = True)
每个 Book 实体都应根据其类型“分类”在预定义的类别中(例如:“恐怖”、“奇幻”、“浪漫”等...)
我希望建立一个流派的流派链接菜单,如下所示:
<ul>
<li><a href="/genre/horror">Horror</a></li>
<li><a href="/genre/fantasy">Fantasy</a></li>
<li><a href="/genre/romance">Romance</a></li>
</ul>
经过研究,我发现这可以通过不同的方式实现。一种方法是使用 choices 属性参数:
class Book(ndb.Model):
title = ndb.StringProperty(required = True)
genre = ndb.StringProperty(choices = ['Horror', 'Fantasy', 'Romance'])
但是,这种方法似乎没有太大的可扩展性和适应性;也就是说,如果我想包含一个新类别,我需要手动编辑 class Book(ndb.Model) 以及 流派链接菜单,以及用于创建和编辑 图书实体的表单。例如:
# new-book.html
<form method="post">
<label>Book Title:<br><input type="text" name="title"></label>
<label>Genres:<br>
<input type="checkbox" name="genre" value="horror">Horror<br>
<input type="checkbox" name="genre" value="fantasy">Fantasy<br>
<input type="checkbox" name="genre" value="romance">Romance<br>
# Adding New Genre */
<input type="checkbox" name="genre" value="mystery">Mystery<br>
</label>
<input type="submit">
</form>
一定有更好的方法!感谢您的提示!
【问题讨论】:
标签: python-2.7 categories app-engine-ndb