当我尝试在我的一个表中运行插入时,我得到以下错误。
无法分配“% 1”:“Team.department_id”必须是“Department”示例
诚然,我有点不确定我是否正确地使用了外键概念。下面给出了我试图运行的插入和来自我的www.example.com的一个片段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)
3条答案
按热度按时间cigdeys31#
你不需要传递部门id,示例本身就足够了。
以下内容应该可以正常工作:
仅备注:千万不要给你的外来字段命名为 something_id。
这一点……就足够了。Django是为了从用户的Angular 让事情变得简单,
_id
后缀意味着你在考虑数据库层。实际上,如果你将列命名为department
,django会自动在数据库中为你创建department_id
列。事情是这样的,你让Django创建
department_id_id
,这是相当愚蠢的。lymgl2op2#
这是谷歌搜索的第一个结果,为新来者提供了一个选择。如果您可以方便地访问id并且不想执行另一个查询,也可以这样做:
简而言之,如果您想直接分配id,则使用
{foreign_key_name}_id
。nafvub8i3#
@munsu的答案的另一种变体。如果您已经有外部字段的ID。
我不知道这是否对任何情况都有用,但它在这里。:)