간단한 노래 표와 소유자 표인 auth_user 표를 고려하십시오. 노래에는 로그인 한 사용자가 한 명 뿐이며 한 명의 소유자 만 소유 할 수 있습니다. 또한 사용자가 많은 잠재적 인 잠재적 소유자를 가질 수 있다고 생각하십시오.web2py, 사용자가 선택할 수있는 항목 드롭 다운이있는 양식 만들기
소유자 테이블 :
db.define_table(
'owner',
Field('user_id', 'reference auth_user'),
Field('name'),
Field('first_name'),
Field('telephone'),
format = '%(name)s, %(first_name)s'
)
노래 테이블
db.define_table(
'song',
Field('user_id', 'reference auth_user'),
Field('owner_id', 'reference owner', requires=IS_EMPTY_OR(IS_IN_DB(db, db.owner.id))),
Field('name'),
Field('description', 'text'),
)
는 컨트롤러에서 간단한 함수를 고려
def create():
form = SQLFORM(db.song).process(next=URL('index'))
return dict(form=form)
을 나는 사용자가 지정할 수 있습니다 된 양식을 만들려고하고 있어요 노래에 대한 알려진 소유자. 안타깝게도 사용자는 다른 사용자의 알려진 소유자를 자신의 노래에 지정할 수 있습니다.
양식에 사용자의 알려진 소유자 만 표시되도록하려면 어떻게해야합니까? 거기에 ID를 주입 및 owner_id 낚시 방지하기 위해 데이터베이스 계층에서 이것을 시행 할 수있는 방법이 있습니까?
는
다시 안토니 감사합니다! 책에서 IS_EMPTY_OR의 정의가 정의 된 곳 (그리고 그 밖의 모든 것)이 어디 있는지 보여 줄 수 있습니까? 상당히 놀랍지 만 사용법을 완전히 이해하지 못합니다. 고맙습니다 – PyWebDesign