Lettura dei dati
Esistono tre modi principali per leggere i dati nei modelli:
Lettura di tutti i dati da un modello
Gli oggetti Model dispongono del metodo all che restituisce tutti i record presenti nel modello. Ciò può essere utile quando è necessario caricare tutti i dati nel modello anziché filtrarli.
Per sapere come vengono trattati i record attivi e quelli archiviati, consultare la pagina Record attivi.
from pyodoo.v12 import Model
model_partner = Model(model_name='res.partner',
endpoint='https://my.odoo.muflone.com/',
database='odoo_db',
username='utente',
password='password',
language='it_IT',
authenticate=False)
model_partner.authenticate()
data = model_partner.all()
Lettura dei dati usando gli ID dei record
Se conosci già gli ID dei record a cui desideri accedere, puoi utilizzare i metodi find, get o get_many.
Un record singolo può essere letto usando il metodo get:
data = model_partner.get(entity_id=2)
Record multipli possono essere letti in una volta usando il metodo get_many:
data = model_partner.get_many(entity_ids=(2, 3, 4))
Il metodo find offre un maggiore controllo rispetto al metodo get_many, consentendo anche di specificare argomenti aggiuntivi come is_active, limit, offset e altri:
data = model_partner.find(entity_ids=(2, 3, 4))
Trovare i record usando i filtri
Per trovare i record necessari è possibile combinare diversi Filters utilizzati per filtrare le righe del modello con i metodi filter, first, count, search.
Tutti i metodi precedenti richiedono un elenco di oggetti Filter o BooleanOperator. Verranno quindi restituiti solo i record corrispondenti (dopo aver applicato il filtro automatico sui Record attivi).
Ad esempio, il seguente elenco di filtri includerà i contatti con un nome contenente Muflone, escludendo i record con ID 193623.
filters = [BooleanOperator.AND,
Filter(field='name',
compare_type=CompareType.CONTAINS,
value='Muflone'),
BooleanOperator.NOT,
Filter(field='id',
compare_type=CompareType.NOT_EQUAL,
value=193623)
]
Se hai solo bisogno di trovare gli ID dei record corrispondenti, puoi utilizzare il metodo search, che restituirà solo gli ID dei record corrispondenti ai criteri di ricerca.
data = model_partner.search(filters=filters)
Se hai solo bisogno di conoscere il numero di record corrispondenti ai filtri, allora il metodo count lo farà:
count = model_partner.count(filters=filters)
Se hai bisogno di trovare e leggere i dati dei record, puoi utilizzare il metodo filter che restituirà un elenco di dizionari con tutti i dettagli dei record.
data = model_partner.filter(filters=filters)
Il metodo first è molto simile al metodo filter, ma restituisce solo il primo record come dizionario o None se non verranno trovati record.
data = model_partner.first(filters=filters)