模型.py
from django.contrib.auth.models import User
class Users(models.Model):
name=models.CharField(max_length=150,blank=True,null=True)
def __str__(self):
return self.name
class Person(models.Model):
user = models.OneToOneField(User, blank=True, null=True)
users = models.OneToOneField(Users, unique=True)
name = models.CharField('Имя',max_length = 250)
class Info(models.Model):
person = models.OneToOneField(Person, blank=True, null=True)
accountname = models.CharField('логин',max_length=128, blank=True, null=True, unique = True)
视图.py
users = Users.objects.all()
for user in users:
query = Person.objects.get(info__accountname=user)
query.users = Users.objects.get(id=user.id)
query.save()
在 Person 和 Info 模型中,数据是从外部数据库加载的。Users 模型是从一个 json 文件加载的,在这种情况下我们只对 name 字段感兴趣。在视图文件中,我们遍历所有用户并与 accountname 字段进行比较。如果它们相等则绑定。用户已附加,但同时弹出错误:
column users_id is not unique
不知何故,一切都令人困惑,而且没有足够的数据。首先,这一行:
像这样似乎更正确:
为了清楚起见,让我们重命名并简化:
在您指望将用户隐式转换为字符串的地方,最好显式指定字段或进行显式转换。
现在你的错误是什么。在 Users 模型中,name 字段没有要求是唯一的,这意味着可以有多个记录来匹配不同的人。