我的模型定義了一個僱員,該僱員具有姓名,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
正如安德烈在他的回答中所建議的那樣,這不應該是一個「選擇」字段,因爲數據依賴。你應該保持邏輯與模型分開。 –