2011-07-29 14 views
1

だから私はこの問題 をした私は、例えば2つのテーブル テンプレート(ID、USER_ID、テンプレート名、参照) user_settings(ID、USER_ID、default_template)web2pyの、データベースの関係と権限

ので、各ユーザをしました多くのテンプレートを作成することができ、彼の設定で彼は常に使用するデフォルトのテンプレートを選択することができます

ユーザーが多いので、デフォルトのテンプレートを選択したいときは、他のユーザーのテンプレート)

のテーブルは、そのように定義されています

db.define_table('i2l_templates', 
    Field('id','id', 
      represent=lambda id:SPAN(A('view',_href=URL('view_template',args=id)),' | ', 
              A('edit',_href=URL('edit_template',args=id)))), 
    Field('user_id', db.auth_user, default=auth.user_id, writable=False,readable=False, 
      label=T('User Id')), 
    Field('template_name', requires=IS_NOT_EMPTY(), type='string', 
      label=T('Template name')), 
... 
... 
... 
) 

db.define_table('user_settings', 
    Field('id','id', 
      represent=lambda id:SPAN(A('view',_href=URL('view_settings',args=id)))), 
    Field('user_id', db.auth_user, default=auth.user_id, writable=False,readable=False, 
      label=T('User Id')), 
    Field('standard_template_id', templates, 
      label=T('Standard Template')), 
... 
... 
) 

私は、ユーザーが唯一の彼自身のテンプレートを選択するために何をすべき!

答えて

0

まず、ない

Field('standard_template_id', templates, 

参照フィールドの場合

Field('standard_template_id', db.i2l_templates, 

をする必要があり、デフォルトのフォームバリデータは、参照テーブル内のすべてのレコードを選択しますIS_IN_DB(db,'<table>.id')、です。ただし、デフォルトのバリデータをオーバーライドして、レコードのサブセットを指定することができます。

requires = IS_IN_DB(db(db.i2l_templates.id==auth.user_id), 
        'i2l_templates.id', '%(template_name)s') 

は、データベースのバリデータの詳細についてはhereを参照してください。