从一个Django模型选择会话中选择特定的外键到另一个模型

时间:2020-07-27 06:53:38

标签: django foreign-keys

我正在尝试进行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”。 我希望它仅显示“经理”名称作为选项。 有人可以告诉我如何实现吗?

Check this image please

1 个答案:

答案 0 :(得分:0)

ForeignKeyOneToOneField都接受参数limit_choices_to,这将过滤可为该字段选择的选项

Dept_Manager = models.OneToOneField(
    'Employee_Detail',
    on_delete=models.DO_NOTHING,
    limit_choices_to={'Position': 'Manager'}
)