1

テーブル内で一意でなければならない3つのフィールドがあり、この質問への回答に基づいて、次のことを試みました(これは理解していると思いますが、明らかにそうではありません...モンキーシー、モンキードゥ):

db.define_table('Person_certification',
                Field('Person', db.Person),
                Field('Certification', db.Certification),
                Field('Start_date', 'date',
                  requires=IS_NOT_IN_DB(db(db.Person_certification.Person==request.vars.Person
                                           & dp.Person_certification.Certification==request.vars.Certification),
                                        'Person_certification.Start_date')),
                Field('End_date', 'date'),
                format='%(Person)s %(Certification)s')

3 つのフィールドは、Person、Certification、および Start_date です。これを使用しようとすると、次のようになります。

<type 'exceptions.KeyError'> 'Person_certification'

トレースバックは「requires」行を参照します。(テーブルには既にデータがあります (3 つのフィールドに重複はありません)。コードは SELECT 中にそのチェックを行おうとしていますか?)

ここで何が欠けていますか?

4

1 に答える 1

1

申し訳ありませんが、元の回答が正しくありませんでした(現在修正済み)。テーブルはまだ定義されていないため、テーブル定義自体で参照することはできません。代わりに、テーブル定義の後にバリデーターを設定します。

db.Person_certification.start_date.requires = IS_NOT_IN_DB(...)
于 2012-06-26T03:37:57.137 に答える