2017-08-12 6 views
-1

ich mein Modell, ich habe ein Feld ‚mentor_id‘, die definiert ist als:Holen Sie die ID des Mitarbeiters des aktuellen Benutzers in XML-Datei odoo 10

mentor_id = fields.Many2one('hr.employee', string='Mentor') 

In My Suche ich einen Filter hinzufügen müssen, die nur Datensätze zeigt mit mentor_id = employee_id des aktuellen Benutzers so i hinzugefügt:

<filter string="My :" name="my" domain="[('mentor_id','in',uid.employee_ids)]"/> 

Aber es scheint nicht zu funktionieren, bekomme ich diesen Fehler:

Uncaught Error: Failed to evaluate search criterions: 
{"code":400,"message":"Evaluation Error","data":{"type":"local_exception","debug":"Local evaluation failure\nAttributeError: object has no attribute 'employee_ids'\n\n{\"domains\":[[],\"[('mentor_id','in',uid.employee_ids)]\"],\"contexts\":[{\"lang\":\"en_US\",\"tz\":false,\"uid\":1,\"params\":{\"action\":324}},{}],\"group_by_seq\":[]}"}} 

UID bezieht sich auf den aktuellen Benutzer nicht? Also warum der Fehler sagt: "Das Objekt hat kein Attribut 'employee_ids'". Jede Hilfe wäre willkommen.

Antwort

0

UID in XML ist kein Objekt, es ist nur der ID-Wert. Versuchen Sie, Benutzer anstelle von UID zu verwenden, aber ich denke nicht, dass es funktioniert.

1

In der Ansicht, werden Sie nur die aktuellen Benutzer erhalten werden id durch user.id Ich habe nicht getestet, aber es kann passieren, dass Sie das aktuelle Benutzerobjekt in dem user Variable in der Ansicht. Und Sie können user.employee_id in der Domäne verwenden.

Wenn dies geschieht nicht, was Sie tun können, ist:

  • eine Many2one Beziehung erstellen auf eine Funktion mit res.users mit einem Compute-Attribut zeigt.
  • Schreiben Sie self.*feild_name* = self.env.user in die Funktion. Sie erhalten das aktuelle Benutzerobjekt in der Ansicht.

Dank

0

Blick wieder auf den Fehler die Sie erhalten.

Objekt hat kein Attribut employee_ids

Dies deutet darauf hin, dass Sie Ihr employee_ids Feld auf das res.users Modell nicht hinzugefügt haben (was uid zieht).

Können Sie Ihr vollständiges Modell posten, damit wir uns ein besseres Bild von den Beziehungen machen können?

1

Sie sollten die Benutzerkennung des Mentors auf dem Mitarbeiter selbst notieren. Es wird einfacher sein. Fügen Sie einfach einen verwandten Bereich (Sie müssen es nicht gesetzt/zeigen, fügen Sie einfach das Feld in Python-Code und fertig):

mentor_id = fields.Many2one('hr.employee', string='Mentor') 
mentor_user_id = fields.Many2one(
    related='mentor_id.user_id', store=True, readonly=True) 

Und gerade diesen Filter verwenden, anstatt

<filter string="My :" name="my" domain="[('mentor_user_id', '=', uid)]"/> 
+0

Dies ist ein gute Antwort hier. Gutes Denken – Cherif

+0

@CherifOdoo Danke. – Majikat

Verwandte Themen