Well, then let the function accepts not a row, but an id, which is the
pk of the row.

On Fri, Jan 8, 2010 at 13:01, mdipierro <mdipie...@cs.depaul.edu> wrote:
> Here is the problem. Perhaps you have a solution.
>
> format is used to represent a record in a reference as a select/
> option. Probably you have many of these records and you only want to
> fetch columns that are necessary to build the representation.
>
> By using format='%(first_name)s %(last_name)s' web can parse it and
> easily figure out that you only need first_name and last_name.
>
> My example above is convoluted but it allows you to create an
> arbitrary representation and specify exactly which fields you need.
>
> By using represent you are passing a (lambda) function. How would
> web2py determine which columns to fetch? Should it fetch them all? It
> could be slow.
>
> Massimo
>
>
> On Jan 8, 5:13 am, "KONTRA, Gergely" <pihent...@gmail.com> wrote:
>> Since the patch is about 2 lines of code, does it make sense to have a
>> represent for tables, similar for fields, so that I could write
>> something like:
>>
>> db.post.represent = lambda row: row['title'], which means the same as
>> using format='%(title)s' on define_table?
>> thx
>> Gergo
>>
>> On Thu, Jan 7, 2010 at 20:32, mdipierro <mdipie...@cs.depaul.edu> wrote:
>> > Now I understand.
>>
>> > Short answer. It cannot be done in the sense there is no API for it
>>
>> > Long answer. It can be done this way:
>>
>> > ### define table post and set the format
>> > ### based on a field that does not exist
>> > db.define_table('post',
>> >    Field('title',length=256),
>> >    Field('body','text',requires=IS_NOT_EMPTY()),
>> >    Field('author',db.auth_user),
>> >    format='%(title_short)s',
>> > )
>>
>> > ### define the field as a virtual field computed
>> > class ComputedFieldsForPost:
>> >    def title_short(self):
>> >        return self.post.title[:40]+'...'
>> > db.post.virtualfields.append(ComputedFieldsForPost())
>>
>> > ### define the referencing table
>> > db.define_table('comment',
>> >    Field('post',db.post,writable=False,readable=False),
>> >    Field('author',db.auth_user,writable=False,readable=False),
>> >    Field('body','text',requires=IS_NOT_EMPTY()))
>>
>> > ### modify an internal of the validator to
>> > ### fetch data required to compute the virtual field
>> > db.comment.post.requires.fields=['post.id','post.title']
>>
>> > This kind of ugly but powerful.
>>
>> > On Jan 7, 12:25 pm, "KONTRA, Gergely" <pihent...@gmail.com> wrote:
>> >> Sure.
>>
>> >> db.py:
>>
>> >> db.define_table('post',
>> >>    Field('title',length=256),
>> >>    Field('body','text',requires=IS_NOT_EMPTY()),
>> >>    Field('author',db.auth_user),
>> >>    )
>>
>> >> db.define_table('comment',
>> >>    Field('post',db.post,writable=False,readable=False),
>> >>    Field('author',db.auth_user,writable=False,readable=False),
>> >>    Field('body','text',requires=IS_NOT_EMPTY()))
>>
>> >> In the example I provided, in the appadmin of comment, auth_user is
>> >> displayed as a dropdown. I would like to do that for comment.post
>> >> also.
>>
>> >> The format option make it possible to hack up some fields of the
>> >> database, but it is not so flexible to display for eg. computed values
>> >> of the post table.
>>
>> >> thanks in advance
>> >> Gergo
>> >> On Thu, Jan 7, 2010 at 16:35, mdipierro <mdipie...@cs.depaul.edu> wrote:
>> >> > Hi Gergo,
>>
>> >> > appadmin has nothing to do with t2 and t2 was deprecated long ago.
>>
>> >> > I guess you can still define db.post.represent but I am not sure what
>> >> > do you want to do with it. What behavior do you expect? Can you
>> >> > provide a concrete example?
>>
>> >> > On Jan 7, 9:31 am, "KONTRA, Gergely" <pihent...@gmail.com> wrote:
>> >> >> Yes, AFAIK appadmin is a T2 thing.
>>
>> >> >> So, I wonder how can one rewrite the line below using
>> >> >> db.post.represent (still that is more flexible)
>>
>> >> >> db.define_table('post',
>> >> >>     Field('title',length=256),
>> >> >>     Field('body','text',requires=IS_NOT_EMPTY()),
>> >> >>     Field('author',db.auth_user),
>> >> >>     format='%(title)s')
>>
>> >> >> db.post.represent = ?
>>
>> >> >> thanks
>> >> >> Gergo
>>
>>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "web2py-users" group.
> To post to this group, send email to web...@googlegroups.com.
> To unsubscribe from this group, send email to 
> web2py+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/web2py?hl=en.
>
>
>
>
-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.


Reply via email to