1

モデルで互いにリンクされた2つのテーブルを持つ単純なアプリを作成しようとしています:

db.define_table('project',
            Field('project_name','string',unique =True),
            auth.signature)
db.define_table('watershed',
            Field('project_name', requires = IS_IN_DB(db,db.project.project_name)),
            Field('main_watershed','string', unique =True),
            auth.signature)
db.watershed.main_watershed.requires = IS_NOT_EMPTY()

コントローラーで:

def add_project():
form = SQLFORM(db.project).process()
if form.accepted: redirect('add_main')
return dict(form = form)

def add_main():
form = SQLFORM(db.watershed).process()
if form.accepted: redirect('add_main')
LIST = db(db.watershed).select()
return dict(form = form, LIST = LIST) 

ユーザーが default/add_project を呼び出して "Project 1" を追加すると仮定すると、ユーザーが default/add_project を呼び出して再度 "Project 1" を追加すると、ユーザーはデータベースに既に存在するエラー値を取得します。

このプロセスが default/add_main に移動した場合、ユーザーが追加すると (例: main_watershed フィールド = MAIN 1)、同じ文字列 NO エラーがポップアップします。

何か不足していますか?なぜ私の値はユニークではないのですか?

4

1 に答える 1