2012-01-05 29 views

Trả lời

10

Đối số format được sử dụng để xác định cách các trường trong bảng khác tham chiếu bảng 'người' sẽ được hiển thị. Ví dụ, nếu bạn xác định:

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

Trường 'chủ nhân' là một lĩnh vực tham khảo tham chiếu bảng 'người' (ví dụ, nó sẽ lưu kỷ lục của id của bản ghi từ bảng 'người'). Trong hầu hết các trường hợp, khi bạn hiển thị dữ liệu từ bảng 'con chó', bạn không muốn hiển thị id bản ghi db.person thô được lưu trữ trong trường 'chủ sở hữu' vì nó không có ý nghĩa - thay vào đó, nó có ý nghĩa hơn để hiển thị 'tên' của người đó. Trong web2py, thuộc tính format của bảng cho phép thay thế tự động này ở cả biểu mẫu và bảng.

Khi bạn tạo SQLFORM dựa trên bảng 'con chó', nó sẽ tự động tạo danh sách thả xuống cho trường 'chủ sở hữu' và do đối số format='%(name)s' đối với định nghĩa bảng 'người', trình đơn thả xuống danh sách xuống sẽ hiển thị tên db.person thay vì id hồ sơ (mặc dù khi gửi biểu mẫu, trường 'chủ sở hữu' sẽ lưu trữ id hồ sơ được liên kết chứ không phải tên).

Ngoài ra, nếu bạn hiển thị bản ghi từ bảng 'con chó' trong SQLTABLE hoặc SQLFORM.grid, trường 'chủ sở hữu' sẽ hiển thị tên của chủ sở hữu thay vì id bản ghi của chủ sở hữu.

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

+0

Cảm ơn. Những gì tôi không hiểu ở đây là những gì làm biểu tượng này **% ** và ** s ** ở cuối đối số có nghĩa là – Jensen

+0

Đó chỉ là tiêu chuẩn [Python chuỗi định dạng ký hiệu] (http://docs.python.org /library/stdtypes.html#string-formatting-operations). Chuỗi 'format' có thể bao gồm tên của bất kỳ trường nào trong bảng. – Anthony

+0

Cảm ơn bạn rất nhiều. – Jensen