国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Django Form解決表單數據無法動態刷新的兩種方法

2020-02-16 01:53:18
字體:
來源:轉載
供稿:網友

一、無法動態更新數據的實例

1. 如下,數據庫中創建了班級表和教師表,兩張表的對應關系為“多對多”

from django.db import modelsclass Classes(models.Model):  title = models.CharField(max_length=32)class Teacher(models.Model):  name = models.CharField(max_length=32)  t2c = models.ManyToManyField(Classes)

2. views的功能有查看、添加、編輯班級或教師表

from django.shortcuts import render, redirectfrom school import modelsfrom django.forms import Form, fields, widgets#班級表單驗證規則class ClsForm(Form):  title = fields.RegexField('老男孩', error_messages={'invalid': '請以 老男孩 開頭'})#教師表單驗證規則class TchForm(Form):  name = fields.CharField(max_length=16, min_length=2, widget=widgets.TextInput(attrs={'class': 'form-control'}))  t2c = fields.MultipleChoiceField(    choices=models.Classes.objects.values_list('id', 'title'),    widget=widgets.SelectMultiple(attrs={'class': 'form-control'})  )#查看班級列表def classes(request):  cls_list = models.Classes.objects.all()  return render(request, 'classes.html', {'cls_list': cls_list})#查看教師列表def teachers(request):  tch_list = models.Teacher.objects.all()  return render(request, 'teachers.html', {'tch_list': tch_list})#添加班級def add_cls(request):  if request.method == 'GET':    obj = ClsForm()    return render(request, 'add_classes.html', {'obj': obj})  else:    obj = ClsForm(request.POST)    if obj.is_valid():      models.Classes.objects.create(**obj.cleaned_data)      return redirect('/school/classes/')    return render(request, 'add_classes.html', {'obj': obj})#添加教師def add_tch(request):  if request.method == 'GET':    obj = TchForm()    return render(request, 'add_teacher.html', {'obj': obj})  else:    obj = TchForm(request.POST)    if obj.is_valid():      tc = obj.cleaned_data.pop('t2c')  # 獲取教師任課班級id      tch_obj = models.Teacher.objects.create(name=obj.cleaned_data['name']) # 添加新教師姓名      tch_obj.t2c.add(*tc)  # 添加新教師任課班級      return redirect('/school/teachers/')    return render(request, 'add_teacher.html', {'obj': obj})#編輯班級def edit_cls(request, nid):  if request.method == 'GET':    cls = models.Classes.objects.filter(id=nid).first()    obj = ClsForm(initial={'title': cls.title})    return render(request, 'edit_classes.html', {'nid': nid, 'obj': obj})  else:    obj = ClsForm(request.POST)    if obj.is_valid():      models.Classes.objects.filter(id=nid).update(**obj.cleaned_data)      return redirect('/school/classes/')    return render(request, 'edit_classes.html', {'nid': nid, 'obj': obj})#編輯教師def edit_tch(request, nid):  if request.method == 'GET':    tch = models.Teacher.objects.filter(id=nid).first()    v = tch.t2c.values_list('id')  # 獲取該教師任課班級的id    cls_ids = list(zip(*v))[0] if list(zip(*v)) else []   # 格式化為列表類型    obj = TchForm(initial={'name': tch.name, 't2c': cls_ids})    return render(request, 'edit_teacher.html', {'nid': nid, 'obj': obj})  else:    obj = TchForm(request.POST)    if obj.is_valid():      tc = obj.cleaned_data.pop('t2c')  # 獲取修改后的任課班級id      # models.Teacher.objects.filter(id=nid).update(name=obj.cleaned_data['name'])   # 更新教師姓名方法1      tch_obj = models.Teacher.objects.filter(id=nid).first()      tch_obj.name = obj.cleaned_data['name']   # 更新教師姓名方法2      tch_obj.save()      tch_obj.t2c.set(tc)      return redirect('/school/teachers/')    return render(request, 'edit_teacher.html', {'nid': nid, 'obj': obj})            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵩明县| 望江县| 琼结县| 彩票| 长海县| 洪雅县| 万山特区| 万载县| 南开区| 曲周县| 慈利县| 南郑县| 内丘县| 西乌| 刚察县| 盐山县| 米脂县| 盐亭县| 郓城县| 靖宇县| 喀什市| 肥城市| 历史| 友谊县| 昌江| 迁安市| 滦平县| 吉水县| 泸溪县| 黄陵县| 宣武区| 济宁市| 宽甸| 泊头市| 八宿县| 泌阳县| 武宣县| 无极县| 阿瓦提县| 三原县| 广灵县|