我的模型定义了一个雇员,该雇员具有姓名,ID,工作和经理。我希望能够指定可以列为另一个员工经理的员工选项列表(类似于jobs字段)。要做到这一点我已经包括Django:具有选择列表的自引用外键
class Employee(models.Model):
EXECUTIVE = 'EXC'
SALESMAN = 'SAL'
ENGINEER = 'ENG'
CLERK = 'CLK'
JOBS = (
(EXECUTIVE, 'Executive'),
(SALESMAN, 'Salesman'),
(ENGINEER 'Engineer'),
(CLERK, 'Clerk'),
)
employee_id = models.CharField(max_length = 5, primary_key=True)
name = models.CharField(max_length=25)
job = models.CharField(max_length=3, choices=JOBS)
is_manager = models.BooleanField(default=False)
manager = models.ForeignKey('self', on_delete=models.PROTECT, null=True, choices=get_managers())
def __str__(self):
return self.name
而且在我的models.py我已经定义了以下功能:
我的问题是,当功能被放置在Employee类定义之前,我NameError: name 'Employees' is not defined
并且在Employee类定义之后放置错误NameError: name 'get_managers()' is not defined
。我曾尝试将get_managers()
放在课程中,并且没有定义'NameError:name'get_managers()'
如果有更好的方法来完成同样的事情,我会接受建议。
你使用任何形式的?或者这是在Django的管理员? – itzMEonTV
正如安德烈在他的回答中所建议的那样,这不应该是一个“选择”字段,因为数据依赖。你应该保持逻辑与模型分开。 –