2017-10-29 6 views
-1

pythonのuuidを使用して一意のユーザーIDを生成し、それを自分のmysqlデータベースに格納しようとしています。 私はいつIDを生成するべきか混乱しています。Djangoでuuidを使用して一意の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 

これは何をしようとする

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

私はチュートリアルを見ていて、それはアップローダがそれをした方法です。私はちょうどその指導に従った。フォームでモデルフィールドを使用できないのはなぜですか? – TheCoxer

+0

フォームとモデルは同じものではありません。このコードは何もしません。 –

答えて

0

まず、私のviews.pyの登録部は、Extending core User modelされています。あなたはそれを行うには2つの方法の1つを選択しなければなりません。私はあなたのuuid IDのような必要なすべての追加フィールドを持つ1対1モデルを作成することをお勧めします。

第二に、コード

user_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 

models.py(ない形で)のフィールドを記述するためのものです。ここにidを生成することについて考える必要はありません。すでにuuid4を呼び出し可能に設定しています。詳しくはdocsをご覧ください。

関連する問題