Thanks. I updated the Github issue, as there are multiple problems with the current implementation of the .validate_and_ methods.
For now, you should be able to get around the two issues you observe by removing the validators: db.story.titleAsSlug.requires = db.story.readURL.requires = None You can probably permanently set the titleAsSlug requires to None, as it will not appear in forms anyway. The default readURL validator, on the other hand, may be needed if you intend to allow inserts/updates directly via SQLFORM.process(). The problem is that the default validator assigned to titleAsSlug transforms None to '', and the default validator for readURL transforms None to 'None'. These values then get inserted in the record. Anthony On Friday, April 21, 2017 at 9:48:53 AM UTC-4, Chris wrote: > > Can do, here's an example: > > # DB > > db.define_table('story', > Field('title', > length=512, > widget=lambda field, value: SQLFORM.widgets.string.widget(field, > value, > _size=40), > requires=[IS_NOT_EMPTY(), IS_LENGTH(minsize=1, maxsize=512)]), > Field('titleAsSlug', > compute=lambda(r): urls.convert_to_slug(r['title'])), > Field('readURL', unique=True, label=T('URL'), required=False, > widget=lambda field, value: > SQLFORM.widgets.string.widget(field, > value, > _size=60, > _placeholder=' > http://www.example.com')), > ) > > # Test > > class TestModels(unittest.TestCase): > def testStoryNewCreate(self): > dct_new_story = { > "title": "Unit Test"} > new_story = db.story.validate_and_insert(**dct_new_story) > self.assertFalse(new_story["errors"], "Error inserting a new > story: " + str(new_story)) > > The readURL field generates an error that the entry is found in the > database. Unique=True is a DB constraint according to the web2py manual and > NULLs in PostgreSQL and SQL in general don't violate the unique constraint. > Web2py attaches an IS_NOT_IN_DB validator that converts None to "None" > instead of null, which only works until there is a row with a readURL of > 'None'. > The titleAsSlug field is set to an empty string by the validator, which is > perhaps why validate_and_insert doesn't compute it where insert does. > > Hope that's helpful, thanks for anything you can do here! > > > On Thursday, April 20, 2017 at 11:05:02 PM UTC-4, Anthony wrote: >> >> Need to see the fields. > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.