Methode zum Setzen von Defaultwerten von Feldern
Dieser Artikel beschreibt, wie man bestimmte Felder bei einem Modul mit Defaultwerten versehen kann. Nachfolgend wird eine Methode verwendet, welche die Defaultwerte durch eine weitere .xml-Datei setzt. Diese Methode wird an dem Modul eq_references beispielhaft beschrieben.
Um einen genaueren Überblick über die verwendeten Felder zu bekommen, wird nun zuallererst an einem Code-Snippet der .py Datei aufgezeigt, wie die Felder eq_ref_speciality_label, eq_ref_difference_label und eq_ref_customer_benefit_label definiert wurden. Hierbei fällt auf, dass die einzelnen Felder nicht wie üblich schon hier mit Defaultwerten versehen sind. Zum Beispiel folgendermaßen:
eq_ref_speciality_label = fields.Char(string="Speciality [eq_references]",required=False, default="mein Defaultwert")
from openerp import models, fields, api, _ import requests from openerp.osv import osv class eq_website_customerportal_config(models.TransientModel): _name = 'eq.website.customerportal.config' _inherit = 'eq.website.customerportal.config' eq_ref_speciality_label = fields.Char(string="Speciality [eq_references]",required=False) eq_ref_difference_label = fields.Char(string="Difference [eq_references]",required=False) eq_ref_customer_benefit_label = fields.Char(string="Customer Benefit [eq_references]",required=False)
Das Setzen der Defaultwerte geschieht in einer separaten .xml-Datei (bei unserem Modul mit der Betitelung set_config_defaults.xml), welche sich in einem Unterordner "data" des Moduls eq_references befindet. Die verschiedenen Records der .xml-Datei sind wie folgt aufgebaut:
- das entsprechende Model: hier ir.config_paramater
- die entsprechende id des Records
- den Key des Feldes: hier zum Beispiel eq.ref.speciality.label
- und zum Schluss den standardgemäß-gesetzten Defaultwert: hier Spezialgebiet
<?xml version="1.0" encoding="utf-8"?> <openerp> <data noupdate="1"> <record model="ir.config_parameter" id="eq_ref_speciality"> <field name="key">eq.ref.speciality.label</field> <field name="value">Spezialgebiet</field> </record> <record model="ir.config_parameter" id="eq_ref_difference"> <field name="key">eq.ref.difference.label</field> <field name="value">Der Unterschied</field> </record> <record model="ir.config_parameter" id="eq_ref_benefit"> <field name="key">eq.ref.customer.benefit.label</field> <field name="value">Ihr Kundenvorteil</field> </record> </data> </openerp>
Nach der Beschreibung der einzelnen Records in der set_config_defaults.xml werden nun die oben näher beschriebenen einzelnen Felder standardgemäß mit den angegebenen Default-Werten versehen (siehe nachfolgende Abbildung).
Zusammenfassung:
Dieser Artikel soll eine Hilfe für Entwickler darstellen, die bei gewissen Feldern eines Moduls schon standardgemäß Default-Werte setzen möchten. Die oben beschriebene Lösungsmöglichkeit ist übersichtlicher, da man alle Defaultwerte in einer einzigen .xml-Datei pflegen kann.
Modul: eq_references
Version. 1.0.1
Related articles