テーブルの1つに挿入を実行しようとすると、次のエラーが表示されます。
「1」を割り当てることができません:「Team.department_id」は「Department」インスタンスでなければなりません
確かに、外部キーの概念を正しく使用しているかどうかは少しわかりません。実行しようとしている挿入と、models.pyのスニペットを以下に示します。
私がやろうとしているのは、誰かが新しいチームを作りたいときです。部門に添付する必要があります。したがって、部門IDは両方のテーブルセットに存在する必要があります。
new_team = Team(
nickname = team_name,
employee_id = employee_id,
department_id = int(Department.objects.get(password = password, department_name = department_name).department_id)
)
models.py
class Department(models.Model):
department_id = models.AutoField(auto_created=True, primary_key=True, default=1)
department_name = models.CharField(max_length=60)
head_id = models.CharField(max_length=30)
password = models.CharField(max_length=128)
class Team(models.Model):
team_id = models.AutoField(primary_key=True)
department_id = models.ForeignKey('Department', related_name = 'Department_id')
employee_id = models.CharField(max_length=30)
nickname = models.CharField(max_length=60)
team_image = models.ImageField(upload_to=get_image_path, blank=True, null=True)
ここにコードを入力してください
部門IDを渡す必要はありません。インスタンス自体で十分です。以下は正常に動作するはずです。
new_team = Team(
nickname = team_name,
employee_id = employee_id,
department_id = Department.objects.get(password = password, department_name = department_name)
)
ご注意ください。外部フィールドに名前を付けないでくださいsomething _ id。 何かで十分です。 Djangoは、ユーザーの観点と_id
接尾辞は、データベース層について考えていることを意味します。実際、列にdepartment
という名前を付けた場合、Djangoは自動的にdepartment_id
データベース内の列。物事は、あなたがDjango create department_id_id
これはかなりばかげています。