When using unique=True on my database model the validation is allowing
duplicates to pass through the form validation. Also notnull=False
does NOT allow me to store Null entries for country, province, city.

db.define_table('ads',
    Field('member_id', db. user_account, default=auth.user.account_id),
    Field('points', 'integer', default=0),
    Field('url', unique=True, requires=IS_URL()),
    Field('language', db.languages, requires=IS_IN_DB(db,
db.languages.id, '%(language)s')),
    Field('country', db.countries, requires=IS_IN_DB(db,
db.countries.id, '%(name)s'), notnull=False, default=None),
    Field('province', db.provinces, requires=IS_IN_DB(db,
db.provinces.id, '%(name)s'), notnull=False, default=None),
    Field('city', db.cities, requires=IS_IN_DB(db, db.cities.id,
'%(name)s'), notnull=False, default=None),
    Field('accepted', 'boolean', default=False),
    Field('viewable', 'boolean', default=True),
    Field('updated_at', 'datetime', default=request.now, writable=False),
    Field('added_at', 'datetime', default=request.now, writable=False)
)

def createad():
    table = ads_api.getDatabaseTable()
    table.member_id.readable = table.member_id.writable = False
    table.accepted.readable = table.accepted.writable = False
    form = SQLFORM(table)
    if form.accepts(request,session, keepvalues=True):
        response.flash = 'form accepted'
    elif form.errors:
        response.flash = 'form has errors'
    else:
        response.flash = 'please fill the form'
    return dict(form=form)

IntegrityError: duplicate key value violates unique constraint "ads_url_key"
DETAIL:  Key (url)=(http://wadecybertech.com) already exists.


Am I doing something incorrect? I basically want a form that allows
country, province, city to be NULL OR a valid item already in the
database, finally I want the url column to be unique. However when a
value already exists and I submit the form I get the IntegrityError.


-- 
-- 
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.warplydesigned.com
http://www.fitnessfriendsfinder.com

Reply via email to