[genropy] Re: relazionare campo di altra tabella in una vista, e lista di default
- From: Massimo Masson <max@xxxxxxxxxxxxxxx>
- To: genropy@xxxxxxxxxxxxx
- Date: Fri, 8 Jan 2016 11:05:00 +0100
Il 08/01/2016 10.35, Francesco Porcari ha scritto:
[...]
(tra l'altro, c'è un modo per imporre la relazione come 1:1?)
Sì devi mettere nella relazione l’attributo one_one. In questo caso potrai
accedere ai dati in relazione dal record con un solo
passaggio. Ti faccio un esempio cliente <—> anagrafica tu puoi prendere tutti i
dati relativi all’anagrafica come @anagrafica_id.cognome
ma contemporaneamente da anagrafica puoi fare @cliente.tipo_cliente dove
“cliente” è il relation_name che hai messo nella relazione.
NB se tu metti l’attributo one_one=‘*’ invece di one_one=True il relation_name
viene defaultato con il nome della tabella
OK
(peraltro mi sono accorto che nel mio caso non sono in 1:1 ma in un
"classico" 1:n. Perdonatemi, sto provando "a canovaccio")
[...]
non so ditelo così, avrei bisogno di vedere il codice
MODEL
-----
ordine.py
[...]
class Table(object):
def config_db(self,pkg):
[...]
tbl.column('tavolo_id', name_long='!!Tavolo',
name_short='!!Tavolo').relation('tavolo.id', relation_name='tavoli',
mode='foreignkey', onDelete='raise')
[...]
tavolo.py
[...]
class Table(object):
def config_db(self,pkg):
tbl =
pkg.table('tavolo',pkey='id',name_long="Tavolo",name_plural='Tavoli',caption_field='descrizione',lookup=True)
self.sysFields(tbl)
tbl.column('descrizione',size='64',name_long='!!Descrizione',name_short='!!desc.',unique=True)
tbl.column('posti', dtype='N', name_long='!!Posti')
TableHandler
------------
th_ordine.py
[...]
class View(BaseComponent):
def th_struct(self,struct):
r = struct.view().rows()
[... vari campi ...]
r.fieldcell('@tavoli.posti')
[...]
Mi pare che i punti critici siano questi... aiuta?
tra l'altro B ha "lookup=True", se nella vista metto il campo "foreign key" che definisce
la relazione verso B da A lui decodifica automaticamente il primo campo (nel mio caso
"descrizione"). Comodo, ma non ho capito
- come fa
basta la relazione
OK
- perché ha scelto quel campo
ha scelto quel campo perché nella tabella hai definito l’attributo caption_field
OK
Ultima domanda: c'è un modo per fare si che all'apertura della vista venga prodotta
la lista risultato senza premere il pulsante "Run query”?
si basta mettere nel th_query l’attributo runOnStart=True
ovvero:
class View(BaseComponent):
[...]
def th_query(self, runOnStart=True):
return dict([...])
Corretto?
Ho provato ma non mi funziona...
Grazie mille,
max.
Other related posts:
- » [genropy] relazionare campo di altra tabella in una vista, e lista di default- Massimo Masson
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Francesco Porcari
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Alessandro Tufi
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default - Massimo Masson
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Francesco Porcari
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Massimo Masson
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Alessandro Tufi
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Massimo Masson
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Massimo Masson
- » [genropy] Re: relazionare campo di altra tabella in una vista, e lista di default- Francesco Porcari