2012-01-05 16 views

Odpowiedz

10

Argument format służy do określenia sposobu wyświetlania pól w innych tabelach, które odwołują się do tabeli "osoby". Na przykład, jeśli określają:

db.define_table('dog', 
    Field('name'), 
    Field('owner', db.person) 

„właściciel” jest polem odniesienia, który odwołuje się do tabeli „osoba” (to znaczy, przechowuje rekord identyfikatorów rekordów z tabeli „osoba”). W większości przypadków, gdy wyświetlasz dane z tabeli "pies", nie chcesz wyświetlać surowego identyfikatora rekordu db.person przechowywanego w polu "właściciel", ponieważ nie ma to żadnego znaczenia - zamiast tego bardziej sensowne jest wyświetlanie "nazwiska" osoby. W web2py atrybut format tabeli umożliwia automatyczne podstawianie zarówno w formularzach, jak i tabelach.

Podczas tworzenia SQLFORM na podstawie tabeli "pies", automatycznie wygeneruje listę rozwijaną dla pola "właściciel", a z powodu argumentu format='%(name)s' do definicji tabeli "osoby", na dole listy będą wyświetlane nazwy db.person zamiast identyfikatorów rekordów (nawet jeśli przy składaniu formularza pole "właściciel" będzie przechowywać powiązany identyfikator rekordu, a nie nazwę).

Ponadto, jeśli wyświetlasz rekordy z tabeli "pies" w SQLTABLE lub SQLFORM.grid, pole "właściciel" będzie wyświetlać nazwę właściciela, a nie identyfikator rekordu właściciela.

Zobacz http://web2py.com/books/default/chapter/29/6#Record-representation.

+0

Dzięki. Czego tu nie rozumiem, to co robi ten symbol **% ** i ** s ** na końcu argumentu oznacza – Jensen

+0

To tylko standardowa notacja formatowania ciągów Python (http://docs.python.org /library/stdtypes.html#string-formatowanie- operacje). Łańcuch 'format' może zawierać nazwy dowolnych pól w tabeli. – Anthony

+0

Dziękuję bardzo. – Jensen