2017-08-16 3 views
0

Ich versuche, einen Domain-Filter zu schaffen, was sollte wie folgt aussehen:Odoo Bereichsfilter funktioniert nicht

(Followup date < today) AND (customer = TRUE OR user_id = user.id) 

Ich habe es wie folgt vor:

[('follow_up_date', '&lt;=', datetime.datetime.now().strftime('%Y-%m-%d 00:00:00')),['|', ('customer', '=', 'False'),('user_id', '=', 'user.id')]] 

Der erste Teil (der Zeitfilter) funktioniert gut, wenn es allein steht, aber wenn ich es mit dem zweiten Teil verbinden, wie ich in dem Beispiel tat oben es gibt mir diese Fehlermeldung:

File "/usr/lib/python2.7/dist-packages/openerp/osv/expression.py", line 308, in distribute_not 
    elif token in DOMAIN_OPERATORS_NEGATION: 
TypeError: unhashable type: 'list' 

Was ist los, wie kann ich meinen Wunsch als richtiger Domainfilter ausdrücken?

Vielen Dank für Ihre Hilfe im Voraus :)

Antwort

1

Odoo die polish notation verwendet. Wenn Sie den logischen Ausdruck (A) AND (B OR C) als Domäne verwenden möchten, müssen Sie Folgendes verwenden: AND A OR B C. Wenn Sie mehr Informationen über polnische Notation wünschen, überprüfen Sie bitte den Link.

Das bedeutet, dass, wenn ich die Frage richtig verstanden habe, müssen Sie dies:

['&', ('follow_up_date', '&lt;=', datetime.datetime.now().strftime('%Y-%m-%d 00:00:00')),'|', ('customer', '=', 'False'),('user_id', '=', 'user.id')] 
0

Versuchen ohne Klammern in dem zweiten Ausdruck:

[('follow_up_date', '&lt;=', datetime.datetime.now().strftime('%Y-%m-%d 00:00:00')),'|', ('customer', '=', 'False'),('user_id', '=', 'user.id')'] 

ich diese Hilfe Sie hoffen.

Verwandte Themen