Db.define_table('foo',Field('a'),Field('b'), Field('ab',unique=True,
compute=lambda r: r.a + r.b))

http://zerp.ly/rochacbruno
Em 30/06/2011 23:04, "Nick Arnett" <[email protected]> escreveu:
> On Thu, Jun 30, 2011 at 6:43 PM, Nick Arnett <[email protected]>
wrote:
>
>>
>>
>> On Thu, Jun 30, 2011 at 4:15 PM, Anthony <[email protected]> wrote:
>>
>>> IS_NOT_IN_DB does take a DAL Set object as the first argument, so you
can
>>> limit the records checked to a particular set within the table (see
>>> http://web2py.com/book/default/chapter/07#Database-Validators). However,
>>> I'm not quite sure what you're trying to do here.
>>>
>>> I think what he wants is the equivalent of Django's "unique together",
>> which I'm also trying to figure out. IS_NOT_IN_DB seems to accomplish it,
>> but is that going to create a unique index on the combined fields?
>> Otherwise, it will be expensive to do inserts.
>>
>
> Actually, I don't see how NOT_IN_DB can accomplish this, since it is
> associated with a single field. Do I have to create an extra concatenated
> field and make it unique? Seems silly, given that's what a database unique
> index is.
>
> In other words, for table foo, if I want fields A, B and C to be unique
> together, do I have to do this?
>
> db.define_table('foo', Field('A'), Field('B'), Field('C'),
> Field('ABC_unique', unique=True))
>
> And remember to concat A, B, and C into that last field every time I do an
> insert?
>
> I'm missing something here, since this is so simple elsewhere.
>
> Nick

Reply via email to