ValueError - 割り当てできません: インスタンスである必要があります 質問する

ValueError - 割り当てできません: インスタンスである必要があります 質問する

テーブルの 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のはかなりばかげています。

おすすめ記事