python - 为什么相关的 create() 使用 Django ORM 检查 id?
问题描述
我收到此错误:
DETAIL: Key (user_id)=(1) already exists.
当我运行时:
from records.models import Profile
from django.contrib.auth.models import User
users = User.objects.all()
for user in users:
p = Profile.objects.create(user=user)
我试图为每个现有用户创建一个配置文件。
个人资料如下所示:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
auto_complete_look_up_field = models.CharField(max_length=200,db_column='AutoCompleteLookUpField', blank=True, null=True)
这里发生了什么事?我希望user_id 存在;那是我要分配给个人资料的用户。为什么这甚至是一个错误?
解决方案
如果Profile
用户已经存在 a ,您将收到此错误。您可以通过使用 which 来解决这个问题,如果一个尚不存在get_or_create
,只会创建新的Profile
profile, created = Profile.objects.get_or_create(user=user)
推荐阅读
- python - 将大型数据框拆分为多个 df,在 Python 中的行数不超过“x”行
- python - 如何提高 Python 循环的性能?
- python - ConnectionResetError(104, 'Connection reset by peer') 在进行 REST 请求时
- c - C程序中出现奇怪字符
- html - 为什么嵌套的 flexbox 不会增长到全宽?
- postgresql - PostgresSQL 安装失败:“数据库集群初始化失败”MAC
- azure-devops - Azure devops 扩展可用图标
- oracle - 使用循环定义数组并添加值
- spring-cloud-stream - 如何在 SCDF httpclient(或 http-request)应用程序中使用 Kafka 标头创建 HTTP 标头?
- orocrm - Datagrid 导航链接在新选项卡中打开