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']} 一個列表,那在前端中只能選擇這個列表中的數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM