I would like to invite web2py users who enjoy such challenges to think with
me about solving the following problem:

Take two tables:

db.define_table('article',
                       Field("author_id", 'list:reference outeur'),
                       Field("title"))

db.define_table('author',
                       Field('surname'),
                       Field('initials'))

Table 'article'  contains 137000 records and author about 108000.

The field definition of 'author_id'  as list:reference would be ideal but in
this case the list is too large and breaks javascript in the browser causing
any crud.create or crud.update to take about 70 seconds to show the form.

I am looking for a solution to be able to enter a new article while the same
screen the user can either select an existing entry in 'author'  or add a
new author linked to the article if the author does not exist in the
database.  Keep in mind that one article can have several authors of which
some may be in the database already and we try to avoid duplicate entries
for the same author.

Using an autocompletion widget for the author might have been useful if only
one  author per article was allowed.

One possible solution is to create a third table for many-to-many relations:

db.define_table('author_article',
                       Field('article_id', db.article,requires =
IS_IN_DB(db,'article.id')),
                       Field('author_id', db.author,requires = IS_IN_DB(db,'
author.id')))

In such a case how would one approach the entry forms in such a way that the
user does not nead to choose different screens/menu options when the author
is new or already in the database or when there are many authors for the
same article?

Regards
Johann


Regards
Johann
-- 
 May grace and peace be yours in abundance through the full knowledge of God
and of Jesus our Lord!  His divine power has given us everything we need for
life and godliness through the full knowledge of the one who called us by
his own glory and excellence.
                                                    2 Pet. 1:2b,3a

Reply via email to