ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django当中models中的limit_choices_to

2022-07-31 11:32:35  阅读:147  来源: 互联网

标签:__ verbose models choices limit name


在models.Model中会遇到 limit_choices_to ,这个是什么意思呢?

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

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

 1 class ClassList(models.Model):
 2     """
 3     班级表
 4     如:
 5         Python全栈  面授班  5期  10000  2017-11-11  2018-5-11
 6     """
 7     school = models.ForeignKey(verbose_name='校区', to='School',on_delete=models.CASCADE)
 8     course = models.ForeignKey(verbose_name='课程名称', to='Course',on_delete=models.CASCADE)
 9     semester = models.PositiveIntegerField(verbose_name="班级(期)")  # PositiveIntegerField 正整数
10     price = models.PositiveIntegerField(verbose_name="学费")
11     start_date = models.DateField(verbose_name="开班日期")
12     graduate_date = models.DateField(verbose_name="结业日期", null=True, blank=True)
13     class_teacher = models.ForeignKey(verbose_name='班主任', to='UserInfo', related_name='classes',on_delete=models.CASCADE,limit_choices_to={'depart__title':'教质部'})
14     tech_teachers = models.ManyToManyField(verbose_name='任课老师', to='UserInfo', related_name='teach_classes', blank=True,limit_choices_to={'depart__title__in':
15                                          ['Python教学部','Linux教学部']})
16     memo = models.TextField(verbose_name='说明', blank=True, null=True)
17 
18     def __str__(self):
19         return "{0}({1}期)".format(self.course.name, self.semester)



# 上述class_teacher中limit_choices_to={'depart__title':'教质部'},表明选择班主任只能在关联班主任的外键表depart中名称为教质部的数据;
#
同时tech_teachers中 limit_choices_to={'depart__title__in':['Python教学部','Linux教学部']},表明选择任课老师只能在关联任课老师的M2M表UserInfo中名称为Python教质部或Linux教学部的数据;

标签:__,verbose,models,choices,limit,name
来源: https://www.cnblogs.com/shaoyishi/p/16536718.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有