Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的django id字段获得用户字段的值?_Python_Django_Django Models_Faker - Fatal编程技术网

Python 为什么我的django id字段获得用户字段的值?

Python 为什么我的django id字段获得用户字段的值?,python,django,django-models,faker,Python,Django,Django Models,Faker,我是django的新手。 我想做一个脚本,可以使伪造数据与伪造 这是我的model.py: class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) #additional blood_type = models.CharField(max_length=2,blank=True) phone_regex = RegexValidator(regex=r'^\+?1

我是django的新手。 我想做一个脚本,可以使伪造数据与伪造 这是我的model.py:

class UserProfile(models.Model):

user = models.OneToOneField(User, on_delete=models.CASCADE)

#additional
blood_type = models.CharField(max_length=2,blank=True)
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=True)
description = models.TextField(blank=True)
case =models.CharField(max_length=30,blank=True)
def __str__(self):
    return self.user.username
这是我的假数据函数 fake_first_name是具有faker生成的假名称的变量,以此类推

    def populate(N=5):
    for entery in range(N):
        #making fake data
        fake_first_name = fakergen.first_name()
        fake_last_name = fakergen.last_name()
        fake_email = fakergen.email()
        fake_password = fakergen.password(length=10)
        fake_blood_type = random.choice(bloodType)
        fake_phone = fakergen.phone_number()
        fake_case = random.choice(Case)
    Create new User entery
    user = User.objects.get_or_create(
        username=fake_first_name, 
        first_name=fake_first_name, 
        last_name=fake_last_name, 
        email=fake_email)[0]
    tempUser = User.objects.get(username=fake_first_name)
    tempUser.set_password(fake_password)
    tempUser.save()
    userprofile = UserProfile.objects.get_or_create(
        user=fake_first_name,
        blood_type=fake_blood_type, 
        phone_number=fake_phone,  
        case=fake_case,
        description='')[0]
我不知道当我们必须使用一对一关系创建表时,这是否是创建对象的正确方法。 在这里:
userprofile=userprofile.objects.get\u或创建(
user=false\u first\u name,
我认为如果
user
等于用户模型的键,那么我的表模型之间的连接就可以了

我得到了这个错误:
ValueError:字段“id”应为一个数字,但得到了“Lisa”

您需要将
用户
作为您的
用户配置文件的
用户
的值传递,而不是
假名字

user = User.objects.get_or_create(
    username=fake_first_name, 
    first_name=fake_first_name, 
    last_name=fake_last_name, 
    email=fake_email)[0]
user.set_password(fake_password)
user.save()
userprofile = UserProfile.objects.get_or_create(
    user=user,
    blood_type=fake_blood_type, 
    phone_number=fake_phone,  
    case=fake_case,
    description='')[0]
user=user.objects.get\u或创建(
用户名=假名字,
名字=假名字,
姓=假姓,
电子邮件=假电子邮件[0]
用户。设置密码(假密码)
user.save()
userprofile=userprofile.objects.get\u或\u create(
用户=用户,
血型=假血型,
电话号码=假电话,
案例=假案例,

描述=“”)[0]
在这种情况下,我得到了这个错误
django.db.utils.IntegrityError:UNIQUE constraint失败:auth_user.username
我不知道这是否与前面的问题有关,或者not@gazegan:这是因为您在数据库中使用相同的
用户名创建了两个
用户
,但是
用户名
应该是唯一的。