This is a good idea. This could also be used to fix 'list:reference'

On Sep 26, 1:26 am, Thadeus Burgess <[email protected]> wrote:
> Write a custom csv importer. use the code in gluon as an example for parsing.
>
> During the initial import, set the reference to None. While importing,
> keep a dictionary in memory that can hold all needed references to a
> record. After import, commit, and then go through your dictionary
> fixing all of the references to what they should be, according to the
> dictionary.
>
> This might require you to use something other than the record ID
> though, like something you can query to get the real id. This way if
> your csv is not fully 100% auto incremented you should be fine.
>
> --
> Thadeus
>
> On Sat, Sep 25, 2010 at 6:41 PM, mdipierro <[email protected]> wrote:
> > There is no way to do this. When you import the first record, the
> > second does not exist yet therefore the reference cannot be adjusted
> > by web2py. This is why self references are never a good idea. Use a
> > link table instead.
>
> > On Sep 25, 2:19 pm, Jurgis Pralgauskis <[email protected]>
> > wrote:
> >> Hello,
>
> >> I have Topics Tree like this
>
> >> db.define_table("Topics",
> >>           Field("parent_id","reference Topics", label=T("Parent
> >> Topic"),
> >>                 #~ widget=my_hierarchical_options_widget, # probably
> >> overriden by requires
> >>                 requires=IS_EMPTY_OR(IS_IN_DB(db,
> >> 'Topics.id','Topics.name'))
> >>           ),
> >>           ....
> >> )
>
> >> after exporting I get
>
> >> Topics.id,Topics.parent_id, ...
> >> 10,10,...
> >> 11,10,...
>
> >> but after reimporting the first record looses parent_id
> >> I can see by exporting again:
> >> 27,10,...
> >> 28,27,...
>
> >> I understand that it should have some hook to update its reference
> >> after it learns it's id.
> >> probably this is not very often way to model sth but is probably a bug
> >> -
>
> >> ps.: I was defining "root" topics this way, but I found workaround to
> >> define root's by parent_id=None ;)
>
>

Reply via email to