Gibt es eine Möglichkeit, ein benutzerdefiniertes Feldattribut in Odoo hinzuzufügen? Zum Beispiel hat jedes Feld das Attribut help
, wo Sie eine Nachricht eingeben können, die das Feld für den Benutzer erklärt. Daher möchte ich ein benutzerdefiniertes Attribut hinzufügen, damit sich das Feld für alle Arten von Feldern ändert.
Ich möchte in Field
class hinzufügen, damit alle Felder dieses Attribut erhalten. Aber egal, was ich mache, Odoo sieht nicht, dass ein solches Attribut hinzugefügt wurde.
Wenn ich einfach ein neues benutzerdefiniertes Attribut wie folgt hinzufügen:
%Vor% Dann wird es einfach ignoriert. Und ich muss es von Methode fields_get
abgeholt werden, die gewünschten Attributwert zurückgeben kann (Info was es tut:
Wenn ich sie anrufe, wird mein benutzerdefiniertes Attribut nicht zurückgegeben (es gibt jedoch die ursprünglich von Odoo definierten zurück).
Ich habe auch versucht, _slots
(mit Affe-Patch oder nur Testen durch Ändern des Quellcodes) in Field
klasse zu aktualisieren, aber es scheint, dass es nicht genug ist. Weil mein Attribut immer noch ignoriert wird.
Kann jemand neues benutzerdefiniertes Attribut für Feld richtig hinzufügen?
Angenommen, v9
Das Ergebnis von fields_get
ist eine Zusammenfassung von Feldern, die in einem Modell definiert sind code zeigt, dass das Attribut nur hinzugefügt wird, wenn die Beschreibung ausgefüllt wurde. Er ruft die Beschreibung des aktuellen Felds durch Aufrufen von field.get_description
Um sicherzustellen, dass Ihr Attribut in dieses self.description_attrs
eingefügt wird, müssen Sie also ein Attribut oder eine Methode hinzufügen, die mit _description_customatt
( customatt
part aus Ihrem Beispiel) beginnt und die erforderlichen Daten zurückgibt.
Ich habe keine Tests dafür ausgeführt, aber Sie können den Code für die Felder und ihre Attribute betrachten, was sie tatsächlich zurückgeben. Zum Beispiel die Hilfe Attribut Beschreibung ( src )
%Vor%Das können Sie nur tun, wenn Sie OpenERP / ODOO auf Ihrem eigenen Server ausführen (also nicht in der Cloud-Version, auf deren Code Sie nicht zugreifen können).
Sie müssen die <base>/osv/fields.py
-Datei ändern und Ihre Änderungen der Funktion field_to_dict
am unteren Ende der Datei hinzufügen (die Basis _column
-Klasse speichert bereits zusätzliche Schlüsselwort-Argumente für Sie - mindestens in Version 7.0) ):
Irgendwo in dieser langen Liste von Attributen müssen Sie den Namen desjenigen eingeben, an dem Sie interessiert sind.
Alternativ könnten Sie _column.__init__
aktualisieren, um die Namen der zusätzlichen Argumente zu speichern, und field_to_dict
, um sie einzubeziehen (ungetestet):
Tags und Links python attributes field openerp odoo-8