• Django--models字段参数 limit_choices_to


    在models中,字段参数limit_choices_to的用法

    在使用ModelForm渲染前端页面的时候,当model字段为ForeignKey的时候,会被渲染成select单选框, model字段为ManyToMany的时候会被渲染成多选select款。

    当你在model中FK字段或者M2M字段中加上 limit_choices_to选项的时候,前端页面的渲染会根据你的限制条件来展示,这样就达到来限制用户选择的目的

    class ClassList(models.Model):
        """
        班级表
        """
        school = models.ForeignKey(verbose_name='校区', to='School', on_delete=models.CASCADE)
        course = models.ForeignKey(verbose_name='课程名称', to='Course', on_delete=models.CASCADE)
        semester = models.PositiveIntegerField(verbose_name='班级(期)')
        price = models.PositiveIntegerField(verbose_name='学费')
        start_date = models.DateField(verbose_name='开班日期')
        graduate_date = models.DateField(verbose_name='结业日期', null=True, blank=True)
        class_teacher = models.ForeignKey(verbose_name='班主任', to='UserInfo', related_name='classes',
                                          on_delete=models.CASCADE, limit_choices_to={'depart__title': '教质部'})
        tech_teachers = models.ManyToManyField(verbose_name='任课老师', to='UserInfo', related_name='teach_classes',
                                               limit_choices_to={'depart__title__in': ['Python教学部', 'Linux教学部']})
        memo = models.TextField(verbose_name='说明', null=True, blank=True)

    从上面的model字段可以看出, class_teacher字段限制了选择条件:{'depart__title': '教质部'}, 即在选择班主任的时候,只能选择关联班主任的外键表depart中名称为教质部的数据

     

    ManyToMany字段的limit_choices_to指向了 {'depart__title__in':['xx','xx']} 一个列表,那在前端中只能选择这个列表中的数据

  • 相关阅读:
    洛谷P3819 松江1843路
    洛谷P1896 [SCOI2005]互不侵犯King
    洛谷P1197 [JSOI2008]星球大战
    洛谷P1171 售货员的难题
    2017-10-24 NOIP模拟赛
    LibreOJ #6192. 「美团 CodeM 复赛」城市网络
    洛谷P2258 子矩阵
    Cogs 9. 中心台站建设
    Cogs 6. 线型网络
    洛谷P3138 [USACO16FEB]负载平衡Load Balancing_Silver
  • 原文地址:https://www.cnblogs.com/aaaajayheng1990/p/11045986.html
Copyright © 2020-2023  润新知