2012-05-14 3 views
0

논리적 인 관점에서 고객을 추가하기 전에 예를 들어 주소를 추가하는 것과 같은 경우가 있습니다. 내가 주소를 완료하면 고객을 만들 수 있습니다 하나 개의 형태를 생성 할 수 있다면중첩 된 CRUD 양식 생성

db.define_table('address', 
    Field('line1','string', required=True), 
    Field('line2','string'), 
    Field('suburb','string', required=True), 
    Field('post_code','integer'), 
    Field('email','string') 
) 

db.address.post_code.requires = IS_INT_IN_RANGE(0000, 9999) 
db.address.email.requires  = IS_EMAIL() 

db.define_table('customer', 
    Field('name', 'string', required=True, unique=True), 
    Field('locations', 'list:reference db.address', required=True), 
    Field('comment', 'string') 
) # quick aside: how would I ensure there isn't another customer with same name+location? 

db.address.requires = IS_IN_DB(db, db.address, '%(line1)s' + ', ' + '%(suburb)s', multiple=True) 

그래서 관리가 훨씬 더 논리적이 될 것이다.

그러나 데이터베이스에 이미있는 레코드를 선택하고 "추가"버튼을 갖기 만하면 유용 할 것입니다. javascript로 롤링합니다. 필드가 비어 있으면 기본적으로 열립니다 (및 .requires 되지 않도록).

이 중첩 CRUD를 어떻게 생성합니까? 모든 제안

덕분에

답변

0

나는 공식 책이 주제는 다소을 다루고 있다고 생각 :

http://web2py.com/books/default/chapter/29/7#One-form-for-multiple-tables

는 기본적으로, 당신은 sqlform.factory을 사용해야합니다. 컨트롤러가 주소의 삽입을 먼저 호출 한 다음 해당 주소의 ID를 얻은 다음 해당 ID를 사용하여 고객의 삽입을 호출합니다.

불행히도 추가 사항을 처리하지만 드롭 다운은 처리하지 않습니다. 당신은 그 자신의 html을 작성해야 할 것입니다. 자동 CRUD 없음.