разбираю как работает пример wiki20 на сайте по turbogear.
сделал простую свою модель:
class Material(SQLObject):
name = UnicodeCol(dbEncoding="cp1251")
unit = UnicodeCol(dbEncoding="cp1251")
type_material = UnicodeCol(dbEncoding="cp1251")
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>Editing - 20 Minute Wiki</title>
</head>
<body>
<div id="main_content">
<div style="float:right; width: 10em">
Editing <span py:replace="material.name">Page Name Goes Here</span>
<br/>
You can return to the <a href="/">FrontPage</a>.
</div>
<form action="save" method="post">
<input type="hidden" name="materialid" value="${material.id}"/>
<textarea name="name" py:content="material" rows="10" cols="60"/>
<input type="submit" name="submit" value="Save"/>
</form>
</div>
</body>
</html>
мне нужно сделать получение по Id, для этого пишу в контроллере:
def edit(self, id):
materials = Material.byId(id)
return dict(material = materials)
materials = Material.byId(id)
AttributeError: type object 'Material' has no attribute 'byId'
сможет ли кто нибудь объяснить?
решил попробовать по другому - в контроллере:
@expose("flat.templates.material_edit")
def edit(self, id):
materials = Material.selectBy(id = id)
return dict(material = materials)
File "c:\Documents and Settings\user\workspace\1\src\flat\flat\templates\material_edit.py", line 67, in _pull
AttributeError: 'SelectResults' object has no attribute 'name'
Error location in template file 'c:\\Documents and Settings\\user\\workspace\\1\\src\\flat\\flat\\templates\\material_edit.kid'
between line 11, column 20 and line 12, column 12:
... <span py:replace="material.name">Page Name Goes Here</span>