Python Django使用OnetoOneField创建数据
您好,谢谢您的时间: 我正试图通过管理/commands/create_data.py向模型表添加一些数据:Python Django使用OnetoOneField创建数据,python,django,python-3.x,django-models,django-database,Python,Django,Python 3.x,Django Models,Django Database,您好,谢谢您的时间: 我正试图通过管理/commands/create_data.py向模型表添加一些数据: User = get_user_model() class GenerateUser(): username = None password = None def __init__(self, username, password): with open('User.txt') as file: for rows in
User = get_user_model()
class GenerateUser():
username = None
password = None
def __init__(self, username, password):
with open('User.txt') as file:
for rows in file:
self.username = slugify(rows)
self.password = '12345'
class GeneratePeople():
user = None
documento = None
birthday = None
def __init__(self, documento, birthday):
with open('People.txt') as file:
for rows in file:
t1 = rows.split(', ')
self.user = slugify(t1[0])
self.documento = t1[1]
self.birthday = t1[2]
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument(
'file_name', type=str, help='ok')
def handle(self, *args, **kwargs):
username = GenerateUser.username
password = GenerateUser.password
user = GeneratePeople.user
documento = GeneratePeople.documento
birthday = GeneratePeople.birthday
one = User(
username=username,
password=password
)
one.save()
peop = People(
user=user,
documento=documento,
birthday=birthday
)
peop.save()
self.stdout.write(self.style.SUCCESS('Data imported successfully'))
问题:
除此之外,我想我会在人物模型的用户字段收到一个错误,因为应该是一个id。
我怎么才能拿到身份证
pets/models.py:
User = get_user_model()
class People(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='person')
birthday = models.DateField()
cpf = models.CharField(max_length=11, validators=[RegexValidator(r'^\d{1,10}$')])
def __str__(self):
return '%s' % (self.user)
pets/management/commands/create_data.py:
User = get_user_model()
class GenerateUser():
username = None
password = None
def __init__(self, username, password):
with open('User.txt') as file:
for rows in file:
self.username = slugify(rows)
self.password = '12345'
class GeneratePeople():
user = None
documento = None
birthday = None
def __init__(self, documento, birthday):
with open('People.txt') as file:
for rows in file:
t1 = rows.split(', ')
self.user = slugify(t1[0])
self.documento = t1[1]
self.birthday = t1[2]
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument(
'file_name', type=str, help='ok')
def handle(self, *args, **kwargs):
username = GenerateUser.username
password = GenerateUser.password
user = GeneratePeople.user
documento = GeneratePeople.documento
birthday = GeneratePeople.birthday
one = User(
username=username,
password=password
)
one.save()
peop = People(
user=user,
documento=documento,
birthday=birthday
)
peop.save()
self.stdout.write(self.style.SUCCESS('Data imported successfully'))
People.txt:
Johnny Cash, 555555555, 1932-02-26
Sid Vicious, 555555555, 1957-05-10
Axl Rose, 555555555, 1962-02-06
Joey Ramone, 555555555, 1951-05-19
Bruce Dickinson, 555555555, 1958-08-07
Kurt Cobain, 555555555, 1967-02-20
Elvis Presley, 555555555, 2008-19-17
User.txt:
Johnny Cash
Sid Vicious
Axl Rose
Joey Ramone
Bruce Dickinson
Kurt Cobain
Elvis Presley
您好,我还没有足够的声誉在您的帖子上写评论,但是如果您只是想添加数据来填充django中的表,我建议您使用文档中描述的方法。这样就更容易了,也不需要拥挤 总之:
- 在应用程序中创建“fixtures”目录
- 创建要添加的与模型字段匹配的数据文件(json或yml)
- 调用
manage.py loaddata数据文件\u name
我希望这有帮助。如果没有,因为您可以发表评论,请让我知道,我可以删除此内容。我已经尝试过,但它无法处理txt文档“fixture可以编写为JSON、XML或YAML”,如果我没有设置JSON文件,但我需要将其设置为txt,谢谢您的提示