我试图根据表单中选定的选项将记录保存到我的数据库。
我试图使用的代码一直告诉我j在先前的列表中的j和j中不存在。
if request.method == 'POST':
for i in courselist and j in previouscourselist:
requestsave(courselist and = i, previouscourselist= j)
使用以下内容。对于第一部分,记录在courselist中使用for i正确循环。 previouscourselist将作为列表[####,####,####]等编写。但是,这不是我想要的。
if request.method == 'POST':
for i in courselist
requestsave(courselist = i, previouscourselist= previouscourselist)
嵌套forloop的正确方法是什么,所以它循环通过courselist列表和之前的thecourselist?在有不同的courselist和previouscourselist的地方写个人记录?
我想要完成的是拥有requestsave(courselist = i, and previouscourselist = j)
所以它是这样写的:
CourseID PreviousCourseID
2000 1001
2000 1015
2001 1001
2001 1015
2002 1001
2002 1015
目前正在使用
if request.method == 'POST':
for i in courselist
requestsave(courselist = i, previouscourselist= previouscourselist)
它将上述语句写为数据库
CourseID PreviousCourse
2000 [1001, 1015]
2001 [1001, 1015]
2002 [1001, 1015]
答案 0 :(得分:3)
首先,您的语法建议您要存储索引而不是项目本身。如果需要枚举,语法将为:
if request.method == "POST":
for item_course, i in enumerate(courselist):
for item_prev_course, j in enumerate(previouscourselist):
requestsave(courselist=i, previouscourselist=j)
否则,如果您想存储该项目,最好使用更好的变量名称,以便读者更容易理解您的代码。
if request.method == "POST":
for current_course in courselist:
for prev_course in previouscourselist:
requestsave(courselist=current_course, previouscourselist=prev_course)
如果要将列表加入到一对一关系的字典中,可以使用 zip()函数,如下所示:
if request.method == "POST":
course_dict = dict(zip(courselist, previouscourselist)
然后沿着该字典迭代
for course, prev_course in course_dict:
requestsave(courselist=course, previouscourselist=prev_course)
答案 1 :(得分:1)
你的意思是:
if request.method == 'POST':
for i in courselist:
for j in previouscourselist:
requestsave(courselist=i, previouscourselist=j)
如果这可以解决您的问题:还有其他方法可以实现您的目标,但如果您还不知道如何做到这一点,那么它们可能不适合您。