checkbox未赋值时获取value是on_Django多对多字段,对checkbox类型的处理

django模型中定一个字段为多对多,比如教师对班级。如果前端传进来的数据是CheckBox形式的,那如何在views中接收并赋值呢,又如何在模板中查询显示呢。来一起看一下。

18d6745063d8fce8f587a76114509ff6.png

前端传入时的形势

为checkbox设置相同的name,不同的value

    {% for teacher in teachers %}      {{ teacher.name }}    {% endfor %}  

views中接收

teachers = request.POST.getlist('teachers')the_class = YearClass(                    theGrade=theGrade,                    theClass=theClass,                )the_class.save()the_class.teachers.add(*teachers)the_class.save()

重点在第一行和倒数第二行的解包。这里解释一下,由于django的规则,在给多对多字段赋值时,不要直接在创建对象的时候传入赋值,要把其它字段创建完并保存对象,确保对象已被创建后,再为该对象赋值多对多字段的数据。其实checkbox解包后得到的是一个列表。

在模板中查询多对多字段数据

先来看代码

{% for cls in year_classes %}                {{ cls.theGrade }}                    {{ cls.theClass }}                    {% for foo in cls.teachers.all %}                                     {{ foo.name }}                            {% endfor %}                                                {% endfor %}

cls.teachers.all 这句是重点,对应字段进行.all操作即可获取。

学会了吧,其实也蛮简单的。

关注“教程智库”,每天更新干货,学习不再迷路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值