Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
1 Rispondi
7126 Visualizzazioni

want to get currently logged in user id as default value in python file but when submit/save it is showing NULL value when querying thru psql. how i can get it, below are what i did, row saved but without current user's id in field user_id.

in python file:

user_id = fields.Many2one('res.partner', string="User",compute='_get_current_user')
    @api.depends('name')
    def _get_current_user(self):
        for r in self:
            r.user_id = self.env.user

created a web page as my view for data entry and controller file:

class QuickOrdersForm(http.Controller):
    @http.route(['/web/quickorders/form'], type='http', auth="public", website=True)
    def quickorders_form(self, **post):
        return request.render("tests.web_quickorders_form", {})
    @http.route(['/web/quickorders/form/submit'], type='http', auth="public", website=True)
    # next controller with url for submitting data from the form#
    def quickorders_form_submit(self, **post):
        qorder = request.env['tests.quickorders'].create({
            'name': post.get('name'),
            'order_type': post.get('order_type')
        })
        vals = {
            'qorder': qorder,
        }
        # inherited the model to pass the values to the model from the form#
        return request.render("tests.web_quickorders_form_success", vals)


Avatar
Abbandona
Risposta migliore

Mr.Smith,

            Your Many2one field user_id  points to the table 'res.partner'. It is wrong and it should be res.users in order to capture the current user who has logged in. 
user_id = fields.Many2one('res.users', string="User", compute='_get_current_user')

Avatar
Abbandona
Autore

thanks to point my mistake, will change and confirm.

Hope it helps. If so please close your query as answered. Thanks

Autore

@Karthikeyan, i modified it as per instructed but still not getting logged-in user's 'id' in my user_id field. is there anything in function _get_current_user or something else?

You can simply use "default" in your field definition instead of writing a compute,

user_id = fields.Many2one('res.users', string='User', default=lambda self: self.env.user)

Autore

yeah, now it works perfectly... modified to use default=lambda self: self.env.user

Post correlati Risposte Visualizzazioni Attività
3
set 22
4120
0
mag 22
2288
0
mar 22
6762
1
lug 25
2353
2
lug 25
7845