Yes Anthony. Thank you again! It works just like you explained.
On Monday, February 1, 2016 at 3:53:30 PM UTC-5, Anthony wrote:
>
> Calling .process will already do an insert into the db.Education table --
> your code is inserting an additional record. Instead, *before* calling
> .process, set db.Education.education_of.default = auth.user_id. Also, the
> education_of field should not be readable or writable.
>
> Anthony
>
> On Monday, February 1, 2016 at 3:47:54 PM UTC-5, Ron Chatterjee wrote:
>>
>> Thanks for the help Anthony. I appreciate that.
>>
>> For some reason this below don't work:
>>
>> form = auth();
>> form2 = SQLFORM(db.Education).process()
>> if form2.accepted:
>> db.Education.insert(education_of = auth.user.id)
>> return dict(form=form, form2 = form2)
>>
>>
>> Or even if I do this:
>> db.Education.update_or_insert(education_of = auth.user.id) #basically
>> updating the education with the auth.user.id (it shows up as None)
>>
>> But strange enough, if I insert the Education.education_of from the table
>> itself (from the admin), it works just fine.
>>
>>
>>
>>
>>
>> On Monday, February 1, 2016 at 1:58:41 PM UTC-5, Anthony wrote:
>>>
>>> I just meant you won't be able to use the built-in auth.profile()
>>> functionality -- your example is custom code.
>>>
>>> Anthony
>>>
>>> On Monday, February 1, 2016 at 1:33:54 PM UTC-5, Ron Chatterjee wrote:
>>>>
>>>> Thank you Anthony,
>>>>
>>>> Very good discussion. Just one question regarding when you say we "have
>>>> to create own register/profile"...
>>>>
>>>> Let's say my model is:
>>>>
>>>>
>>>> #----------------------------------------------------------------------------------------------
>>>> db.define_table("Education",
>>>> Field("education_of", 'reference auth_user',
>>>> widget=SQLFORM.widgets.options.widget, requires= IS_EMPTY_OR(IS_IN_DB(db,
>>>> db.auth_user.id))),
>>>> Field("Title", "string", label='Education Title',
>>>> requires=IS_NOT_EMPTY(),default=None))
>>>>
>>>> #----------------------------------------------------------------------------------------------
>>>> controller:
>>>>
>>>> form = auth();
>>>> form2 = SQLFORM(db.Education).process()
>>>> if form2.accepted:
>>>> db.Education.education_of.default = db.auth_user.id
>>>> return dict(form=form, form2 = form2)
>>>>
>>>>
>>>> #-------------------------------------------------------------------------------------------------------------------------
>>>>
>>>> And in view we add the education as a folding or something:
>>>>
>>>> <div class="container">
>>>> <button type="button" class="btn btn-info" data-toggle="collapse"
>>>> data-target="#demo">Add Education</button>
>>>> <div id="demo" class="collapse">{{=form2}}</div>
>>>> </div>
>>>>
>>>>
>>>> We can make the education_of as readable = False. So, it gets
>>>> updated/inserted as auth_user.id
>>>>
>>>> Do I still need to code up profile separately? We can add other tables
>>>> the same way. No?
>>>>
>>>>
>>>> On Monday, February 1, 2016 at 12:25:43 PM UTC-5, Anthony wrote:
>>>>>
>>>>> If there aren't too many fields, it might just be easiest to put them
>>>>> all in auth_user and just make some conditionally readable/writable
>>>>> depending on the type of user. Otherwise, you could create separate
>>>>> profile
>>>>> tables and have them reference auth_user. In that case, you would have to
>>>>> create your own register/profile actions, as web2py Auth won't handle the
>>>>> separate tables for you.
>>>>>
>>>>> Finally, it might be possible for you to conditionally change the
>>>>> names of the Auth tables based on user type:
>>>>> http://web2py.com/books/default/chapter/29/09/access-control#Renaming-Auth-tables.
>>>>>
>>>>> However, you would have to be able to identify the user type *prior*
>>>>> to registration/login (e.g., based on some identifier in the URL), as the
>>>>> Auth table names must be determined in order to process any Auth actions.
>>>>>
>>>>> Anthony
>>>>>
>>>>> On Monday, February 1, 2016 at 12:30:04 AM UTC-5, [email protected]
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>> Hello web2py community. I am a new user and I have to say, web2py
>>>>>> saves the day by saving so much time over a full stack framework which
>>>>>> requires so much work. Anyway, going to ask a question tothe community.
>>>>>> How
>>>>>> to custom create auth_user so instead of adding extra fields to the
>>>>>> auth_user we can have multiple tables for the profile with various
>>>>>> attributes. I am creating an application for gym membership and I need
>>>>>> to
>>>>>> have the user register based on their job, current address, prior
>>>>>> fitness
>>>>>> routines, current fitness routine, activities they are interested...etc.
>>>>>> Put all in one tables with various fields seems make a table
>>>>>> disproportionately long. Would be nice to split them to different tables
>>>>>> and user can pick and choose which tables they like to fill up or they
>>>>>> don't.
>>>>>>
>>>>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.