Odoo - benutzerdefiniertes Feldattribut hinzufügen?

9

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:

%Vor%

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.

%Vor%

Kann jemand neues benutzerdefiniertes Attribut für Feld richtig hinzufügen?

    
Andrius 10.06.2016, 07:35
quelle

2 Antworten

3

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%     
Red15 14.06.2016, 16:32
quelle
0

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) ):

%Vor%

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):

%Vor%     
Ethan Furman 14.06.2016 01:14
quelle