テーブルの 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))
モデル.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)
ベストアンサー1
部門 ID を渡す必要はなく、インスタンス自体で十分です。
次のようにすれば問題なく動作するはずです:
new_team = Team(
nickname = team_name,
employee_id = employee_id,
department_id = Department.objects.get(password = password,
department_name = department_name))
メモ: 外部フィールドに名前を付けないでください何か_id.
それ何かで十分です。Django は、ユーザーの観点から物事を簡単にすることを目的としており、サフィックスは_id
データベース層を考慮していることを意味します。実際、列に という名前を付けると、Django はデータベースに列をdepartment
自動的に作成します。department_id
現状では、Django に作成させるdepartment_id_id
のはかなりばかげています。