我正在尝试使用python' s uuid
生成一个唯一的用户ID,然后将其存储在我的mysql数据库中。
我很困惑何时应该生成ID。
这是我的forms.py
:
from django import forms
from django.contrib.auth.models import models
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
import uuid
class RegistrationForm(UserCreationForm):
email = models.EmailField(required=True)
user_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
class meta:
model = User
fields = (
'first_name',
'last_name',
'email',
'password1',
'password2'
)
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
user.user_id = uuid.uuid4()
if commit:
user.save()
return user
这是我的views.py
的注册部分def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
form.save
return redirect('/account')
else:
form = RegistrationForm()
args = {'form':form}
return render(request, 'accounts/registration.html', args)
答案 0 :(得分:0)
首先,您要做的是Extending core User model。您必须选择以下两种方法之一。我建议使用所有必要的附加字段创建一对一模型,例如您的uuid ID。
其次,代码
user_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
用于描述 models.py 中的字段(不在表单中)。如果你把它放在这里你不必考虑生成id,你已经为它设置了一个可调用的uuid4。阅读更多docs。