首页 > 解决方案 > Django 无法分配数据库关系错误

问题描述

我已经阅读了很多条目,但找不到答案。这是我的模型:

class Branches(models.Model):
    branch_name = models.CharField(max_length=200)

        def __str__(self):
            return self.branch_name

class Agents(models.Model):
    branch_name = models.ForeignKey(Branches, null=True, on_delete=models.SET_NULL)
    agent_name = models.CharField(max_length=200)

        def __str__(self):
            return self.agent_name

class Policies(models.Model):
    policy_n = models.CharField(max_length=100)
    account = models.CharField(max_length=100)
    agent_name = models.ForeignKey(Agents, null=True, on_delete=models.SET_NULL)
    branch_name = models.ForeignKey(Branches, null=True, on_delete=models.SET_NULL)

以及在我的 view.py 文件中将数据插入相关表的代码:

policies = pd.read_excel('policies.xlsx')

for i in policies.branches.unique():
    branch = Branches()
    branch.branch_name = i
    branch.save()

for j in policies.agents.unique():
    agent = Agents()
    agent.agent_name = j
    agent.save()

for i in range(len(policies)):
    policy = Policies()
    policy.policy_n = policies.policy_num[i]
    policy.account = policies.account[i]
    policy.branch_name = Branches.objects.get(branch_name=policies.branch[i])
    policy.agent_name = Agents.objects.get(agent_name=policies.agent_name[i])

我收到错误消息:

ValueError: Cannot assign "(<Branches: Copenhagen>,)": "Policies.branch_name" must be a "Branches" instance.

有人可以帮忙吗。

标签: djangodjango-modelsdjango-viewsdjango-database

解决方案


我找到了解决方案!我将系列对象转换为列表对象,它现在正在工作。

我从以下几行更改:

policy.branch_name = Branches.objects.get(branch_name=policies.branch[i])
policy.agent_name = Agents.objects.get(agent_name=policies.agent_name[i])

至:

policy.branch_name = Branches.objects.get(branch_name=list(policies.branch)[i])
policy.agent_name = Agents.objects.get(agent_name=policies.list(agent_name)[i])

推荐阅读