当我试图在我的一个表中运行INSERT时,我得到以下错误.

无法分配"1":"Team.department_id"必须是"department"实例

诚然,我有点不确定我是否正确使用了外键概念.我试图运行的插入和我的模型中的一个片段.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.something个就足够了.Django旨在从用户的Angular 让事情变得简单,_id后缀表示您考虑的是数据库层.事实上,如果您将列命名为department,Django将自动在数据库中为您创建department_id列.现在的情况是,您让Django创建department_id_id,这是相当愚蠢的.

Django相关问答推荐

在Django ORM中引用非主外键

如何保护单个数据库行/模型实例?

获取 Django (postgres) 中带注释字段的平均值

SQLite上可以正常使用Many2Many链接注释,但MariaDB上无法正常使用(生产环境)

源自访问外键关系的模型方法 get_absolute_url 的 django 重复 SQL 查询

如何在视图中的 Django 重定向末尾附加字符串?

如何在 ModelViewSet 逻辑中读取查询字符串值?

如何计算 Django 模型中特定对象的数量?

超级用户在基于类的视图中进行身份验证

djangorestframework:过滤相关字段

Django删除查询集的最后五个以外的所有内容

Django populate() 不可重入

如何在 Django 中向 ChoiceField 添加class?

Django ModelChoiceField optgroup 标签

在 Django 中注册用户的最佳方法

在 docker 容器中创建 django 超级用户而不输入密码

Django post_save 在不覆盖模型 save() 的情况下防止递归

如何使 Django QuerySet 批量删除()更高效

如何在 Django 中测试自定义模板标签?

如何在字段集中显示 Django 管理内联模型?