私のモデルは、名前、ID、ジョブ、およびマネージャーを持つ従業員を定義します。私は、他の従業員マネージャーとしてリストアップできる従業員の選択肢のリストを指定することができるようにしたいと思っています(jobsフィールドに似ています)。Django:選択リスト付き自己参照外部キー
私の問題は、関数がEmployeeクラス定義の前に置かれたとき、私はNameError: name 'Employees' is not defined
を得ることです。そうするために、私は私のmodels.pyで、私は次の関数を定義している。また
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
が含まれていますEmployeeクラスの定義の後に置かれた場合、エラーNameError: name 'get_managers()' is not defined
。私はget_managers()
をクラスに入れて、 `NameError:name 'を取得しようとしました。get_managers()は定義されていません。
同じことを達成する良い方法があれば、 Djangoのドキュメントから
で
に、あなたはどのフォームを使用していますか?またはこれはdjango管理者ですか? – itzMEonTV
Andreyが彼の答えで示唆しているように、これは実際にはデータに依存するので、これは選択肢のフィールドではないはずです。ロジックをモデルと分離しておく必要があります。 –