Mi trovo nella situazione in cui a partire da un oggetto in una tabella, devo selezionare degli oggetti da un'altra tabella (filtrati in modo abbastanza complesso) ed elaborarli usando il primo oggetto.
Quello che mi piacerebbe avere sarebbe, a partire dal primo oggetto, un wizard che mi proponga, ad esempio in un One2Many, la lista di oggetti che posso scegliere, mi permetta di selezionarne alcuni, mi permetta di settare delle opzioni generiche, e chiami una funzione sulla selezione.
Idealmente l'azione dovrebbe chiamare del codice del genere, impostando partner_id tramite contesto:
class SelectionWizard(models.TransientModel): _name = "selection.wizard" _description = "Wizard di selezione multipla"
partner_id = fields.Many2one(comodel_name="res.partner", string="Partner")
possible_ids = fields.Many2many( comodel_name="my_model", string="Selezioni possibili", compute="_compute_possible_ids", )
option_1 = fields.Integer(string="Opzione 1")
option_2 = fields.Integer(string="Opzione 2")
option_3 = fields.Integer(string="Opzione 3")
def _compute_possible_ids(self):
for record in self:
record.possible_ids = self.env["my_model"].search(...)
def do_stuff(self):
# itera sugli oggetti selezionati e elaborali secondo le opzioni settate
Da quanto mi è parso di capire tra documentazione e forum vari non c'è un modo per fare cose del genere di default. L'unica soluzione che avrei ora sarebbe creare un wizard che ritorni una tree view su my_model con gli elementi filtrati e tutti i dati passati via contesto, e una azione su my_model che faccia l'elaborazione vera e propria usando anche il contesto che arriva dalla prima azione, ma questo oltre a complicare un sacco il codice complicherebbe anche le azioni richieste dall'utente per portare a termine questa operazione.
Esiste la possibilità, anche tramite qualche modulo tecnico, di creare wizard del genere?
Nulla di pronto. Come hai intuito devi scrivere un po' di codice. Però sono cose fattibili.