Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami
  • Pagina:
  • 1
  • 2
  • 3

ARGOMENTO: Comportamento dei campi da interfaccia

Comportamento dei campi da interfaccia 3 Anni 8 Mesi fa #21001

  • MiCantino
  • Avatar di MiCantino
  • Offline
  • Expert Boarder
  • Messaggi: 137
  • Ringraziamenti ricevuti 7
  • Karma: 1
Ho necessità di pulire un campo e renderlo readonly nel caso in cui venga checkato un campo presente sulla stessa form.

Facendo questo nella view risolvo il problema in parte
<field name="is_qualificato"/>
							<field name="data_qualifica" attrs="{'readonly': [['is_qualificato','=',False]]}"/>

ma come pulisco il valore?

Nel model ho provato a fare questo
class miaClasse(models.Model):
	is_qualificato = fields.Boolean(string="Qualificato")
	data_qualifica = fields.Date(string="Data Qualifica")

[...]

@api.onchange('is_qualificato') # if these fields are changed, call method
def _onchange_qualificato(self):
	if self.is_qualificato==True:
		self.data_qualifica.value=''
		self.data_qualifica.readonly=True

Ma sembra che non ci sia alcun effetto sul comportamento dell'interfaccia.
Sono completamente fuori strada?

Un'altra domanda, ma forse devo aprire un topic a parte: come posso inserire nell'interfaccia un campo tipo "star rating"?
Ultima modifica: 3 Anni 8 Mesi fa da MiCantino.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Comportamento dei campi da interfaccia 3 Anni 8 Mesi fa #21002

  • MiCantino
  • Avatar di MiCantino
  • Offline
  • Expert Boarder
  • Messaggi: 137
  • Ringraziamenti ricevuti 7
  • Karma: 1
Ho modificato il mio codice.

View:
<field name="is_qualificato" on_change="onchange_is_qualificato(is_qualificato)"/>
				<field name="data_qualifica"/>

Model:
class MiaClasse(models.Model):
[...]	
	is_qualificato = fields.Boolean(string="Qualificato")
	data_qualifica = fields.Date(string="Data Qualifica")
[...]


	def onchange_is_qualificato(self, cr, uid, ids, is_qualificato=False, context=None):
		if self.is_qualificato==True:
			return {
				'value': {'data_qualifica': ''},
				'domain': {'data_qualifica': 'readonly': [['is_qualificato','=',False]]},
				'warning': {'title': "ATTENZIONE",'message': "La variazione di questo campo avrà ",}
			}


Ora sembra partire l'evento, ma purtroppo al momento della variazione del campo "is_qualificato" viene restituito questo errore:


File "/opt/bitnami/apps/odoo/data/addons/8.0/supplier_assestment/models/res_partner.py", line 44, in onchange_is_qualificato
if self.is_qualificato==True:
File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150526-py2.7.egg/openerp/fields.py", line 807, in __get__
record.ensure_one()
File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150526-py2.7.egg/openerp/models.py", line 5263, in ensure_one
if len(self) == 1:
File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150526-py2.7.egg/openerp/models.py", line 5458, in __len__
return len(self._ids)
AttributeError: 'res.partner' object has no attribute '_ids'
Ultima modifica: 3 Anni 8 Mesi fa da MiCantino.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Comportamento dei campi da interfaccia 3 Anni 8 Mesi fa #21003

  • MiCantino
  • Avatar di MiCantino
  • Offline
  • Expert Boarder
  • Messaggi: 137
  • Ringraziamenti ricevuti 7
  • Karma: 1
:oops:
il parametro on_change però dovrebbe essere deprecato, la prima strada forse è la più corretta.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Comportamento dei campi da interfaccia 3 Anni 8 Mesi fa #21011

  • tafaRU
  • Avatar di tafaRU
  • Offline
  • Expert Boarder
  • Messaggi: 88
  • Ringraziamenti ricevuti 33
  • Karma: 3
MiCantino ha scritto:
@api.onchange('is_qualificato') # if these fields are changed, call method
def _onchange_qualificato(self):
	if self.is_qualificato==True:
		self.data_qualifica.value=''
		self.data_qualifica.readonly=True
Questo tipo di assegnazioni non mi pare siano permesse. Prova piuttosto con:
self.data_qualifica = False

Per la gestione del readonly ti è sufficiente attrs.
Ultima modifica: 3 Anni 8 Mesi fa da tafaRU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: MiCantino

Comportamento dei campi da interfaccia 3 Anni 8 Mesi fa #21031

  • MiCantino
  • Avatar di MiCantino
  • Offline
  • Expert Boarder
  • Messaggi: 137
  • Ringraziamenti ricevuti 7
  • Karma: 1
Niente, così attengo il messaggio

File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150526-py2.7.egg/openerp/models.py", line 5745, in _onchange_eval
method_res = method(self)
File "/opt/bitnami/apps/odoo/data/addons/8.0/supplier_assestment/models/res_partner.py", line 46, in _onchange_qualificato
self.data_qualifica=False
AttributeError: 'bool' object has no attribute 'value'
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Comportamento dei campi da interfaccia 3 Anni 8 Mesi fa #21048

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
prova a fare un debug con pdb e vedere cosa contiene self
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: MiCantino
  • Pagina:
  • 1
  • 2
  • 3
Tempo creazione pagina: 0.149 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam