在stackoverflow中的所有成员和web2py中的所有专家级别的好日子!
这是关于使用@Anthony Anthony给我的现有代码的学年,学生名单(Masterlist)和组织罚款。
这些是我的数据库:
让我们从学年开始:
db.define_table('school_year',
Field('sy',),
Field('current_year', 'boolean'),
format='%(sy)s')
下一个学生列表
db.define_table('student_list',
Field('lastname'),
Field('firstname'),
Field('middlename'),
Field('address'),
format='%s, %s' % ('%(lastname)s', '%(firstname)s'))
,最后是组织罚款表
db.define_table('org_fines',
Field('sy_id','reference school_year'),
Field('stud_id', 'reference student_list'),
Field('total_fines', 'double'),
Field('date', 'datetime'),
Field('paid', 'boolean'))
这是Anthony的原始代码
db.stud_adviser.sy_id.default = db.school_year(current_year=True).id
db.stud_adviser.adv_id.default = auth.user_id
def add_students(ids):
for id in ids:
db.stud_adviser.insert(stud_id=id)
form = SQLFORM.grid(db.student_list, create=False, selectable=add_students, csv=False, paginate=13)
这是我修改过的代码,但仍然无法使其正常工作。
db.org_fines.sy_id.default = db.school_year(current_year=True).id
def members_fines(ids):
for id in ids:
db.org_fines.insert(stud_id=id)
form = SQLFORM.grid(db.student_list, create=False, selectable=members_fines, csv=False)
安东尼在评论中说道,他的一些评论仍然不明白(因为总决赛即将到来):
可选参数是一个回调函数,它接收在网格中选择的记录ID列表。作为该参数提供的add_students函数循环遍历ID,并在stud_adviser表中为每个记录插入新记录。因为每个记录的学年和顾问ID应该相同,所以通过设置各自字段的默认属性来设置它们(对于学年,我假设您想要当前学年的ID) - 排除那些来自.insert()调用的字段,将自动插入默认值。
基于此评论:
因为每个记录的学年和顾问ID应该相同
因为我在org_fines表中没有顾问ID,所以可以使用Anthony给我的代码吗?
直接提问安东尼
我仍然没有得到它:这些代码有什么区别:auth_user_id,auth_user.id和auth.user_id?我何时何地使用这些代码?请提前感谢赐教
答案 0 :(得分:0)
解决问题:
旧代码:
db.define_table('org_fines',
Field('sy_id','reference school_year'),
Field('stud_id', 'reference student_list'),
Field('total_fines', 'double'),
Field('date', 'datetime'),
Field('paid', 'boolean'))
新代码:
db.define_table('org_fines',
Field('sy_id','reference school_year'),
Field('studID', 'reference student_list'),
Field('total_fines', 'double'),
Field('date', 'datetime'),
Field('paid', 'boolean'))
db.org_fines.sy_id.default = db.school_year(current_year=True).id
def add_students(ids):
for id in ids:
db.org_fines.insert(studID=id)
grid = SQLFORM.grid(db.student_list, create=False, csv=False, deletable=False, details=False, editable=False, selectable=add_students,
paginate=13, orderby=db.student_list.lastname)
我只是将org_fines中的stud_id更改为studID ...我不知道为什么安东尼的代码不起作用的原因......所以需要一个解释来启发我