我制作了一个应用程序,其中我制作了三个模型如下:
from django.db import models
class Class_Mgmt(models.Model):
class_name = models.CharField(max_length=8,null=False,blank=False)
def __str__(self):
return self.class_name
class Section_Mgmt(models.Model):
stu_class=models.ForeignKey(Class_Mgmt)
section_name=models.CharField(max_length=1,null=False,blank=False)
def __str__(self):
return self.section_name
class Teacher_Mgmt(models.Model):
teacher_name=models.CharField(max_length=50,null=False,blank=False)
tea_class=models.ForeignKey(Class_Mgmt)
tea_section=models.ForeignKey(Section_Mgmt)
def __str__(self):
return self.teacher_name
此处,Section_Mgmt
类与Class_Mgmt
具有foreignKey关系,这意味着当我运行项目并添加新的section_name
时,将从投放中选择class_name
- 所有现有类的下拉列表。它在该项目中运作良好。
但是,在Teacher_Mgmt
模型中,我想这样做:当我在表单中输入新教师时,当我从下拉列表中选择现有的类时,它只会显示可用的部分因为,section_Mgmt
模型还与class_Mgmt
模型具有外键关系。
目前,当我运行项目并输入新教师,并从显示所有现有类的下拉列表中选择一个类时,则显示所有部分,而不是仅显示该类中可用的那些部分。
答案 0 :(得分:0)
Django没有内置此功能,但您可以使用django-smart-selects。只需安装此库并将Teacher_Mgmt更改为以下代码:
from smart_selects.db_fields import ChainedForeignKey
class Teacher_Mgmt(models.Model):
teacher_name=models.CharField(max_length=50,null=False,blank=False)
tea_class=models.ForeignKey(Class_Mgmt)
tea_section=ChainedForeignKey(
Section_Mgmt,
chained_field="tea_class",
chained_model_field="tea_class",
show_all=False,
auto_choose=True
)
def __str__(self):
return self.teacher_name