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