web2py, едно към много, не е задължителна връзка

Помислете за 2 таблици в web2py python уеб рамката.

По подразбиране auth_user

и това също:

b.define_table(
    'artwork',
    Field('user_id', 'reference auth_user', required=False),
    Field('name'),
    Field('description', 'text')
    )

Сега, когато отида в администрацията на базата данни в (appadmin), бих очаквал user_id да не е задължително. Ако оставя падащото меню за избор празно, когато ръчно въвеждам запис в таблицата с произведения на изкуството, се казва: „стойността не е в базата данни“, което е в противоречие с оператора required=False.

Бих искал да мога да вмъкна запис без user_id

Може ли някой да ми помогне да разреша това? Много благодаря


person PyWebDesign    schedule 22.01.2014    source източник


Отговори (2)


Когато създавате референтно поле, по подразбиране то получава валидатор requires=IS_IN_DB(...). Атрибутът requires се прилага на ниво формуляри, докато атрибутът required се прилага на ниво DAL. За да замените валидатора на формуляр по подразбиране, можете да направите:

Field('user_id', 'reference auth_user', requires=None)

или алтернативно,

Field('user_id', 'reference auth_user',
      requires=IS_EMPTY_OR(IS_IN_DB(db, 'auth_user.id',
                                    db.auth_user._format)))
person Anthony    schedule 22.01.2014