django - 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.
有人可以帮忙吗。
解决方案
我找到了解决方案!我将系列对象转换为列表对象,它现在正在工作。
我从以下几行更改:
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])
推荐阅读
- android - 尝试通过(OnItemClickListener)在片段之间添加选定的图像视图,在应用程序崩溃的第二个 ImageView 上
- aws-lambda - 尝试使用无服务器获取 aws lambda
- node.js - 如何在express js中使用特定字段而不是id进行查询
- java - 如何评估一个值是否在 DROOLS 的值列表中
- .net - 如何在 JSON .NET 上对属性名称强制使用引号
- reactjs - 失败的道具类型:提供给“表单(xxx)”的“对象”类型的无效道具“表单”,应为“字符串”
- javascript - 在运行测试时放宽 Chrome 的 CSP (webdriver) (Content-Security-policy)
- javascript - 我的情况下函数声明和函数表达式之间的区别
- mysql - 从两个表总计 SQL 中计算速率
- html - 在 Html 中的位置