Mind that unless the referenced table has a format='...', then
reference fields do not have a default validator. If they do not have
one, when you use a database that does provide referential integrity
you will run into problems because you will get an OperationalError
form the database. Web2py should validate the field before it sends
the data to the database.

> nother feature, that django's admin knows and quite useful: where you
> can select an FK, there is a link for creating that type of object
> (displays in a popup). So, when you could not find the desired value
> in the selectbox, you can create a new option.

We should have something like this. It can be done easily with a
widget but appadmin should have something like that by default.


On Jan 2, 1:10 pm, "KONTRA, Gergely" <pihent...@gmail.com> wrote:
> >> > On Jan 1, 9:48 am, pihentagy <pihent...@gmail.com> wrote:
> >> > The sytnax is Field(name, type). The default type is a string. If you
> >> > want it to be a reference it has to said explicitly. You do the same
> >> > in Django. The validator is optional and, in fact, since 1.74 you get
> >> > that validator by default if web2py knows how to represent a partner.
> >> > For example
>
> >> >     db.define_table('partner',Field('name'),format='%(names)s')
> >> >     db.define_table('whatever',Field('partner',db.partner))
>
> >> Hm so getting referential integrity only when the system can _display_
> >> some type of record? Again, I see a problem here: validator should
> >> really care about validity, and representation should be another
> >> thing.
>
> > I am not sure I understand. Field('partner',db.partner) defined a
> > reference field. The reference is always implemented using the Primary
> > Key (the ID field) and this has nothing to do with representation. The
> > format string is used only when building a representation of the
> > reference in forms. What you see (%(name)s) is not the key and is not
> > what is stores in the database for whatever.partner.
>
> Ah, maybe the fact, that I use sqlite for testing purposes can explain things.
> So, if I say:
> db.define_table('whatever',Field('partner',db.partner))
>
> than, using the appadmin, I can create a record with arbitrary partner
> id (because no selectbox for FK selection). And since sqlite does not
> handle referential integrity, it can save it fine.
>
> >> And if we are representation: if web2py renders a mandatory FK as a
> >> combobox, there is no dummy 'please select one' option.
> >> The first valid option is selected by default. This causes serious
> >> usability issues, because users will not pay any attention to select a
> >> valid option, because there is something, and it validates.
>
> > Please never assume that something that is not done by default cannot
> > be done.
>
> > db.whatever.partner.requires.zero="Please Select One"
>
> Ah, thanks. (IMHO that shold be default in the appadmin).
>
> Another feature, that django's admin knows and quite useful: where you
> can select an FK, there is a link for creating that type of object
> (displays in a popup). So, when you could not find the desired value
> in the selectbox, you can create a new option.

--

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