2021.10.8
昨天没什么时间专心写,就构思了一下,补充了需求分析。
1.作业发布 - 表单和数据库
- 先创建一个作业模型类
菜鸟问题再次暴露。 竟然在创建表也出了问题:生成迁移文件并迁移后,觉得不满意,把新的迁移文件和数据库表删了,改完后重新生成迁移文件,执行迁移命令时,却说没有迁移文件可用。 百度了一下,原来生成迁移真正对比的也在数据库中存着。 里面有我前面迁移的记录,因为表名、文件名一样所以迁移时找不到新的迁移文件。
所以解决办法是:删掉django_migrations里上一条创建的数据。
-
记住这个前端报错,遇到两次了 Uncaught SyntaxError: Invalid regular expression flags,都是ajax里的url用了反向生成url忘了加引号 ‘’ -
Form中choicefield下拉菜单选取数据库内容,参考以下链接 参考
即在实例化Form的时候给字段加上choices参数
form = CreateJobForm(request.POST)
form.fields['user_id'].choices = choice
- 外键在表单里要用 关联外键_id 例如user外键,如果字段直接用user,会报 应该传一个user实例 的错,所以我后来改成了user_id,因为确实是这样,我的select的value是int类型。
- 还有如果用上面加入选项的方式,GET中加了,POST也要加,不然就写进__init__里,每次实例化会一起生成。
- clean_字段 这个方法不仅可以用来检验数据,还可以用来对数据进行处理。
- 在表单form.save()时候,将没出现在表单中但模型类有的数据用instance补上,项目id
form.instance.project_id=project_id
和用户id,(发现)这边用户id虽然有选择,但是如果没有补上,它保存是空的,(在模型类中我允许它为空),不知道是因为我设置了它可以为空才会这样还是因为外键都不自动保存,这是一个疑点,如果有大佬看到这可以指点指点吗。 虽然这样刚好可以符合我有允许为空的设计。所以我加了个判断。如果为空传过来的value是0,如果不是0我就补上user_id,如果为0,直接跳过,也就是空了。
2.作业发布 - 功能部分
- 添加了任务是否收到字段。将一些判断将按钮显示区分开。
如果作业没有指派给谁,就显示为待领任务,如果有,就显示指派任务。
待领任务,领取按钮,不是发布者才显示。 指派任务,收到按钮,只有被指派者才显示。
点击领取按钮,将user_id添加,并把是否收到字段置True,不再显示。 点击收到按钮,把是否收到字段置True,不再显示。
- 刚才在弄这两个按钮的重定向时,我直接return redirect(request.path_info),想要返回当前页,结果网页显示“此网页包含过多重定向”
原因是:领取或收到的按钮,都分别新创建了一个url处理,从a标签跳转过来,现在的path_info已经变成了处理按钮的路由了,又redirect到这个路由,又处理按钮的视图函数,又redirect所以就会导致死循环,从而出现“此网页包含过多重定向”的问题。
- 在访问项目视图函数中添加了限制,若不是这个项目的参与者和创建者,都无法访问,重定向回管理中心。
- 如果踢出成员,之前只做了删除对应的项目成员数据和项目人数-1,这边补上,还要再删除成员与该项目有关的消息,只留下被踢出的消息,因为只要有消息没忽略就无法重新邀请。
- 还有踢出成员,应该要把未完成的项目释放到发布情况中,所以还要一列是否完成列。
今天就写到这吧,添加了是否完成列,明天写释放未完成任务。
美化一下界面,将参与者弄成表格形式展示。今天是与问题做斗争的一天。
|