2017-07-25 79 views
1

我被编写为Profile,并使用OneToOneField连接到用户模型。我有一个注册表单,用户输入对应于用户和配置文件的输入。 Django提供User.objects.create_user保存与User模型相关的字段,但我不知道如何手动保存Profile模型的详细信息。
这里是我的代码:Django手动保存用户配置文件

models.py

from django.db import models 
from django.contrib.auth.models import User 

def Profile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    full_name = models.CharField(max_length=150, required=True) 
    # lot more fields here 

views.py

@csrf_protect 
def register(request): 
    if request.method == 'POST': 
     full_name = request.POST.get('full_name', '') 
     username = request.POST.get('username', '') 
     password = request.POST.get('password', '') 
     User.objects.create_user(username=username, password=password) 
     # how to save Profile full_name here 

    return render(request, 'register.html') 

register.html

<form method="post" action="/register/">{% csrf_token %} 
    <div class="form-group"> 
     <label for="full_name">Name</label> 
     <input type="text" name="full_name" id="full_name"> 
    </div> 
    <div class="form-group"> 
     <label for="username">Username</label> 
     <input type="text" name="username" value="" id="username"> 
    </div> 
    <div class="form"> 
     <label for="password">Password</label> 
     <input type="pass" name="password" value="" id="password"> 
    </div> 
    <button type="submit" class="btn btn-primary">Submit</button> 
</form> 

1)如何将Profile型号的full_name保存到views.py?我可以做到这一点,而不需要为将来想要保存或信号的每个模型创建表单类?
2)是否需要在settings.py中更改auth_user_model才能手动保存配置文件详细信息?
3)如何验证字段而不创建新的Form类?

回答

3
@csrf_protect 
def register(request): 
    if request.method == 'POST': 
     full_name = request.POST.get('full_name', '') 
     username = request.POST.get('username', '') 
     password = request.POST.get('password', '') 
     user = User.objects.create_user(username=username, password=password) 
     Profile.objects.create(user=user,full_name=full_name) 
     # how to save Profile full_name here 

    return render(request, 'register.html') 

您可以使用创建的用户实例来创建与用户当我使用

+0

'蟒蛇manage.py makemigrations'我得到'类型错误相关的配置文件:__init __()得到了一个意想不到的关键字参数“ ' – nivas

+0

删除您的个人资料模型的全名中的required = True – Exprator

+0

但我每次都需要full_name – nivas