2016-06-21 9 views
1

Ich würde gerne wissen, ob es eine Möglichkeit ist, eine ganze Zahl irgendwo in odoo zu speichern, ohne ein neues Objekt erstellen zu müssen. Ich möchte eine Nummer behalten, um nur Partner mit einer ID anzuzeigen, die dieser Nummer überlegen ist. Aber ich möchte kein Feld in jedem einzelnen Datensatz von res.partner hinzufügen. Wie kann ich eine Nummer haben, die ich in meine XML-Datei einbinden kann, ohne dass es ein Feld von res.partner ist?Speichern eines int in odoo

Antwort

1

Sie können das Modell ir.config_parameter für solche Fälle verwenden. Gewöhne dich an die Methode set_param() und get_param().

Der Parameter enthält seinen Wert als String, also wird er für mein Beispiel in Integer geparst. Die XML-ID lautet my_module.test_parameter.

Aber die Verwendung in der Ansicht ist ein bisschen schwierig. Ein Weg wäre ein Filter mit einem Kontext „Signal“ innerhalb der Suchansicht des Modells sein:

<filter name="my_filter" string="My Filter" context="{'search_by_parameter':1}" /> 

Damit könnten Sie die Suche() des Modells überschreiben die Parameter zu verwenden, wenn die Filter aktiviert wurde:

def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): 
    context = dict(context or {}) 
    if 'search_by_parameter' in context: 
     try: 
      value = int(self.pool.get('ir.config_parameter').get_param(cr, uid, 'my_module.test_parameter')) 
     except: 
      value = 0 
     args.append(('id', '>', value)) 
    return super(my_model, self).search(cr, uid, args, offset, limit, order, context, count) 
+0

Vielen Dank, ich werde versuchen, eine Dokumentation zu diesem Thema zu finden. –

+0

Sorry, eine Frage hinzuzufügen, aber: Wo setzen Sie den Parameter? Ich habe es in einem transienten Modell versucht, wie ich es bei anderen Diskussionen gesehen habe, aber es scheint nicht so zu sein, wie es hier sein sollte. (Ich möchte die höchste ID speichern, wenn ein bestimmtes Feld von res_partner exportiert wird). Weißt du wie ich es machen soll? Muss ich eine neue Klasse erstellen? –

+0

Das Modell/die Klasse ist bereits da: 'ir.config_parameter '. Sie finden die Standardparameter unter Einstellungen/Technisch/Parameter/Systemparameter. Erstellen Sie einfach einen config_parameter, indem Sie den XML-Datensatz in Ihrem Modul verwenden und diesen für Ihren Zweck verwenden. Implementieren Sie einen set_param() - Aufruf in Ihre Exportausführung, um einen neuen Wert im config_parameter zu speichern. – CZoellner