• Django之CRM项目Day6-公私户转换问题解决 班主任功能


    1.解决公户转私户的问题

    数据库中加锁:

    ​ begin; 开始事务

    ​ select * from user where id=1 for update; 加锁

    ​ commit; 结束事务

    django中加锁:

    with transaction.atomic():
        # 查询出数据加锁
        queryset = models.Customer.objects.filter(id__in=ids, consultant__isnull=True).select_for_update()  # 加锁
    
        if len(ids) == queryset.count():
            queryset.update(consultant=self.request.account)
            return
        return HttpResponse('你的手速太慢了,已经被别人抢走了')
    

    设置数量的上限

    2.班主任的功能:

    ​ -班级的管理

    ​ form的__all__在前端的显示 {{ form_obj.non_field_errors.0 }}

    ​ -课程记录的管理

    ​ -学习记录的管理

    # 批量创建
    list1 = []
    for student in all_students:
        list1.append(models.StudyRecord(course_record=course_record_obj, student=student))
    
    models.StudyRecord.objects.bulk_create(list1)
    

    modelformset

    # 生成FormSet的类
    FormSet = modelformset_factory(models.StudyRecord, StudyRecordForm, extra=0) 
    # 查询的数据
    all_study_record = models.StudyRecord.objects.filter(course_record_id=course_record_id)
    # modelformset对象
    form_obj = FormSet(queryset=all_study_record)
    
    form_obj = FormSet(request.POST, queryset=all_study_record)
    form_obj.is_valid()
    form_obj.save()
    
    # 错误提示
    form_obj.errors
    
    {{ form.instance }}   ——》   每一个数据  对应的对象
    {{ form.instance.student }}    —— 》 值
    {{ form.attendance }}         —— 》  input框 select框
    
    注意:
    {{ form_obj.management_form }}     
    每一行要有 {{ form.id }} 
    
  • 相关阅读:
    python变量赋值(可变与不可变)
    cx_Oracle读取中文乱码问题(转载)
    Lookandsay sequence(看读序列)
    oracle 效率之 not in 和exists
    python encode和decode函数说明
    PILpython的图像处理模块
    iOS中判断一个文件夹是否存在
    Validate Email Account using Regular Expression in ObjectiveC
    UILabel描边
    获取app当前可用的剩余内存
  • 原文地址:https://www.cnblogs.com/russellyoung/p/Django-zhiCRM-xiang-muDay6gong-si-hu-zhuan-huan-we.html
Copyright © 2020-2023  润新知