:
def test():
fields = [db.tableA[field] for field in db.tableA.keys() \
if type(db.tableA[field]) == type(db.tableA.some_field)]
fields += [db.tableB[field] for field in db.tableB.keys() \
if type(db.tableB[field]) == type(db.tableB.some_field)]
ff = []
for field in fields:
ff.append(Field(field.name, field.type))
form = SQLFORM.factory(*ff, readonly=True)
return dict(form=form)
당신은 field.required에 추가 할 수 있습니다, 당신은 SQLFORM.factory을 사용하고 있기 때문에, 당신은 할 수 있어야, 또한 등 validtaors을 field.requires 그리고 유효성을 검사하고 업데이트/삽입합니다. 이 메소드를 사용하여 작성중인 양식에 양식의 유효성을 검사하는 데 필요한 모든 정보가 있는지 확인하십시오. 위의 Field
인스턴스화에 쉽게 추가 할 수 있습니다.
편집 : 오 그래, 그리고 레코드 ID (양식 정의 후 ...)를 기반으로 폼을 미리 채우기 위해 해당 레코드의 값을 가져와야합니다. 이러한 지능형리스트, 당신은 단지 SQLFORM.factory를 사용하여 두 개의 테이블을 제공 할 수 있습니다
def test():
form = SQLFORM.factory(db.tableA, db.tableB, readonly=True)
record = ... (query for your record, probably based on an id in request.args(0))
for field in record.keys():
if (*test if this really is a field*):
form.vars[field] = record[field]
return dict(form=form)
일부 조정이 난 단지 사전 인구 사이비 코드를 제공하기 때문에 필요합니다 ...하지만 보면됩니다 http://web2py.com/books/default/chapter/29/7#Pre-populating-the-form 및 SQLFORM/SQLFORM.factory 섹션.