首页 > 解决方案 > 为什么相关的 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 存在;那是我要分配给个人资料的用户。为什么这甚至是一个错误?

标签: pythondjangodjango-modelsdjango-orm

解决方案


如果Profile用户已经存在 a ,您将收到此错误。您可以通过使用 which 来解决这个问题,如果一个尚不存在get_or_create,只会创建新的Profile

profile, created = Profile.objects.get_or_create(user=user)

推荐阅读