我正在尝试进行django练习,同时尝试将外键添加到一个模型到另一个模型。 我有一个名为“ Employee_detail”的模型,并且有一个名为“ Position”的会话。 职位是一个选择字段,选择是“经理”,“主管”和“员工”。
我有另一个名为“部门”的模型,我使用OneToOneField来获取此模型中的Employee details(Manager)。我想将部门经理(仅)添加到“ Dept_Manager”字段。
class Department(models.Model):
Dept_No = models.CharField(primary_key=True, max_length=6)
Dept_Name = models.CharField(unique=True, max_length=20)
Dept_Manager = models.OneToOneField('Employee_Detail', models.DO_NOTHING)
def __str__(self):
return self.Dept_No
class Employee_Detail(models.Model):
Employee_ID = models.CharField(primary_key=True, max_length=6)
Employee_Name = models.CharField(unique=True, max_length=30)
Primary_Phone = models.IntegerField(unique=True, max_length=10)
p = (
("Manager","Manager"),("Supervisor","Supervisor"),("Employee","Employee")
)
Position = models.CharField(max_length=15, choices= p, default="Employee")
Email = models.EmailField(max_length=50, unique=True)
def __str__(self):
return str(self.Employee_Name)
但是,当我尝试在“ Dept_Manager”中这样做(请检查图像打击)时,它将显示并允许在该字段中添加“ Supervisor”或“ Employee”。 我希望它仅显示“经理”名称作为选项。 有人可以告诉我如何实现吗?
答案 0 :(得分:0)
ForeignKey
和OneToOneField
都接受参数limit_choices_to
,这将过滤可为该字段选择的选项
Dept_Manager = models.OneToOneField(
'Employee_Detail',
on_delete=models.DO_NOTHING,
limit_choices_to={'Position': 'Manager'}
)