使用 TurboGears 和 Python 开发 Web 站点
2007-03-30 12:27:33 来源:WEB开发网核心提示: 接下来是模型类,每个类表示数据库中的一个表,使用 TurboGears 和 Python 开发 Web 站点(4),它是使用一个映射为数据库列的类级属性定义的,这些属性是 SQLObject 列类型的实例,这种操作也会发生,有关 SQLObject 的更多文档,包括基本数据类型,例如 St
接下来是模型类。每个类表示数据库中的一个表,它是使用一个映射为数据库列的类级属性定义的。这些属性是 SQLObject 列类型的实例,包括基本数据类型,例如 StringCol 和 CurrencyCol;以及关系类型,例如 ForeignKey 和 MultipleJoin。
对于这个购物车来说,有一个层次 Category 类和一个简单的 Product 类。目录层次是由父 ForeignKey 和子类 MultipleJoin 定义的。
清单 6. Category 和 Product 类(model.py,续)
class Category(SQLObject):
name = StringCol(length=64)
parent = ForeignKey('Category', default=None)
subcategories = MultipleJoin('Category', joinColumn='parent_id')
products = MultipleJoin('Product')
class Product(SQLObject):
name = StringCol(length=64)
sku = StringCol(length=64)
price = CurrencyCol(notNone=True, default=0.0)
category = ForeignKey('Category')
要验证这个模型,请使用 tg-admin sql sql 命令显示创建所需要的表使用的 SQL 代码。注意 SQLObject 会为每个表都创建一个 id 列。即使没有定义主键,这种操作也会发生。有关 SQLObject 的更多文档,请参见 参考资料 给出的链接。
清单 7. 使用 “tg-admin sql sql” 命令查看数据库模式
~/dev/TG-Commerce$ tg-admin sql sql
Using database URI sqlite:///home/ubuntu/dev/TG-Commerce/tgcommerce.db
CREATE TABLE category (
id INTEGER PRIMARY KEY,
name VARCHAR(64),
parent_id INT
);
CREATE TABLE product (
id INTEGER PRIMARY KEY,
name VARCHAR(64),
sku VARCHAR(64),
price DECIMAL(10, 2) NOT NULL,
category_id INT
);
Tags:使用 TurboGears Python
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接