我正在用web2py做一个示例应用程序。其中涉及客户、产品和票据,如下所示
db=DAL('sqlite://Navale.db')
db = DAL(lazy_tables=True)
STATE= ('Andaman and Nicobar Islands','Andhra Pradesh','Arunachal Pradesh','Assam','Bihar','Chandigarh',' Chhattisgarh','Dadra and Nagar Haveli','Daman and Diu','Delhi','Goa','Gujrat','Haryana','Himachal Pradesh','Jammu and Kashmir','Jharkhand',' Karnataka','Kerala','Lakshadeep','Madhya Pradesh','Maharashtra','Manipur','Meghalaya','Mizoram','Nagaland','Odisha','Puducherry','Punjab','Rajasthan','Sikkim','Tamil Nadu','Telangana','Tripuru',' Uttar Pradesh','Uttarakhand','West Bengal')
db.define_table('Customer',
Field('Customer_ID', type='id', requires=IS_NOT_EMPTY()),
Field('Customer_Type', requires=IS_IN_SET(['Retail','Local'])),
Field('Name', type='string', requires=IS_NOT_EMPTY()),
Field('Contact_Number', type='integer', requires=IS_NOT_EMPTY()),
Field('Address', type='string'),
Field('City', type='string', requires=IS_NOT_EMPTY()),
Field('State', requires=IS_IN_SET(STATE)),
Field('PIN', type='integer', requires=IS_NOT_EMPTY())
)
db.define_table('Product',
Field('Product_ID', requires=IS_NOT_EMPTY()),
Field('Product_Name'),
Field('Category', requires=IS_IN_SET(['Gents', 'Ladies', 'Kids'])),
Field('Rate', type='double'))
db.define_table ('Bill',
Field('Bill_ID', type='id', requires=IS_NOT_EMPTY()),
Field('Date', type='datetime'),
Field('Customer_ID', db.Customer),
Field('Customer_Name', db.Customer),
Field('Total_cost', type='double'))
当我试图在“Bill”中添加客户名称时,它显示了错误。
我想要生成/打印一个帐单,其中包含客户详细信息、产品信息(如产品名称、产品类型、数量、价格)和所有产品的总价。
帮帮我。
注:-本条例草案由产品的动态价值组成。这意味着比尔可以有1/2/3/./n个产品。
发布于 2016-04-05 00:44:53
在web2py中,引用字段存储引用表的主键,即引用表的整数"id“字段。因此,将"Customer_Name“字段定义为引用字段是没有意义的(这样的字段可能会存储名称,但引用字段存储整数ID)。"Customer_ID“字段已经是对"Customer”表的引用--您不需要对"Customer“表进行额外的引用。因此,您应该简单地删除"Customer_Name“字段。
注意,您可以向"Customer“表添加一个"format”属性:
db.define_table('Customer', ..., format='%(name)s')
现在,每当定义引用"Customer“表的字段时,例如:
Field('Customer_ID', db.Customer)
引用字段将获得(a)一个显示客户名称的默认表单小部件(即使相关的“客户”记录ID将插入数据库中),以及(b)默认的“表示”属性,该属性在只读窗体和网格中显示客户名称而不是客户ID。
如果您需要与账单或票据集一起访问客户详细信息,则可以通过加入进行访问。您还可以利用web2py的内置递归选择功能。
https://stackoverflow.com/questions/36385195
复制相似问题