You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何将列表数据存入Model且不覆盖ID?

问题原因

Django 模型默认会自动添加 id 作为主键字段,并且它是模型定义的第一个字段。你使用 You(*d) 这种位置参数实例化时,列表里的第一个元素会被赋值给 id 字段,而非你预期的 Name,这就导致系统尝试覆盖ID的问题。editable=False 仅影响后台管理表单的编辑权限,不改变模型实例化时的参数匹配逻辑。

解决方案

1. 使用关键字参数实例化

直接通过字段名指定参数,避免位置匹配错误:

data = [["john", 16] ,["jax", 18]] 
for name, age in data:
    obj = You(Name=name, Age=age)
    # 若需要保存到数据库,调用 save()
    # obj.save()

如果数据量大或字段多,也可以通过字段名列表批量转字典:

field_names = ["Name", "Age"]
data = [["john", 16] ,["jax", 18]] 
for d in data:
    obj = You(**dict(zip(field_names, d)))
    # obj.save()

2. 批量创建(推荐)

如果是要批量保存到数据库,使用 bulk_create 效率远高于循环调用 save():

data = [["john", 16] ,["jax", 18]] 
objs = [You(Name=name, Age=age) for name, age in data]
You.objects.bulk_create(objs)

内容的提问来源于stack exchange,提问作者Phyo Arkar Lwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:25:15