Uses cases
- Create an object containing references
- Passing reference from one model to another
- Change the order of attributes displayed in the list
- Rename the attributes displayed in the list
- Change the main attribute of the class 'id' by other
- Formatting attributes in the list
Create an object containing references
In this example shown as Province
object has a reference to the objectCountry
through the attribute Province.country
from storm.locals import *
from country import Country
class Province (object):
__storm_table__ = "states"
id = Int(primary = True)
name = Unicode()
country_id = Int()
country = Reference(country_id, Country.id)
Passing reference from one model to another
Several times we need to interact with data from another model. Here is an example:
from book.manager import BookManager
from book.gui import BookGUI
from library.manager import LibraryManager
from library.gui import LibraryGUI
book_mgr = BookManager(store, reset)
library_mgr = LibraryManager(store, reset)
books_gui = BookGUI(manager = book_mgr)
# here is passed by reference 'books_gui' to 'library_gui'
library_gui = LibraryGUI(manager = library_mgr, managers = [books_gui])
Change the order of attributes displayed in the list
In the gui.py
, only to change the order in which they are defined attributes list, changes already be reflected in the table.
class PersonsGUI( BaseGUI ):
def __init__(self, manager, managers = []):
BaseGUI.__init__(self, manager, managers)
[...]
self.addTableColumn(u'#', Person.id)
self.addTableColumn(u'Name', Person.name)
self.addTableColumn(u'Last name', Person.last_name)
self.addTableColumn(u'E-mail', Person.email)
self._start_operations()
Rename the attributes displayed in the list
Only renaming the keys in the call to the 'addTableColumn' function, changes will be reflected in the table.
...
self.addTableColumn(u'#', Person.id)
self.addTableColumn(u'ChangeMe', Person.name)
...
Change the main attribute of the class 'id' by other
Always default id
attribute to identify objects in the database is used.
Here is an example of how to change the attribute id
by isbn
in the case of a book:
# class with 'ide' attribute
class Book (object):
id = Int(primary = True)
# class with changed 'isbn' attribute
class Book (object):
isbn = Unicode(primary = True)
Formatting attributes in the list
Sometimes we need to format the attributes displayed in the list.
See an example of how: give the format 'dd/mm/yyyy' to date column add '$' sign to 'amount' column
def fnParseDate(self, row, value):
return value.strftime("%d/%m/%Y")
def fnParseAmount(self, row, value):
return "$ %8.2f" % value
# using the 'fnParse' option
self.addTableColumn(u'Date', InvoiceRow.date, fnParse=self.fnParseDate) # type date
self.addTableColumn(u'Supplier', InvoiceRow.supplier) # type unicode
self.addTableColumn(u'Amount', InvoiceRow.amount, fnParse=self.fnParse) # type float
How to center a column? - 'C' for center - 'L' for left - 'R' for right
# using the 'alignment' option
self.addTableColumn(u'Amount', InvoiceRow.amount, alignment='C')
Go > Index | Go > Install | Go > Getting started | Go > Use cases | Go > Example Apps