簡體   English   中英

Django手動保存用戶配置文件

[英]Django save user profile manually

我創建了一個Profile並使用OneToOneField附加到用戶模型。 我有一個注冊表單,用戶可以在其中輸入與用戶和個人資料相對應的輸入。 Django 提供User.objects.create_user來保存與User模型相關的字段,但我不知道如何手動保存Profile模型的詳細信息。
這是我的代碼:

模型.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  

視圖.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')  

注冊.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)如何在views.py保存Profile模型的full_name 我可以在不為將來想要保存的每個模型或信號創建表單類的情況下執行此操作嗎?
2)我是否需要更改auth_user_model中的auth_user_model以手動保存配置文件詳細信息?
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')  

您可以使用創建的用戶實例來創建與該用戶關聯的配置文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM