2017-01-20 7 views
1

が、私はこの方法をのuuid使用ジャンゴでモデルを持っている:Djangoはどのようにuuidを生成しますか?

uuid = models.CharField(max_length=100, default=uuid.uuid1) 

ことですが、私は2つのオブジェクト、次々に発生したとき、私はこれだ:

933e35c4-df1c-11e6-8a53-ace01055799e 

そしてを:

933e35c5-df1c-11e6-8a53-ace01055799e 

私は私がしているこれらの2つのUUIDを取得するときに、すべてのUUIDが、彼らは正確にどのように生成されるか、ランダムに生成されたが、衝突の確率は非常に低いとされて知っていることから、ほぼ同じ? (最初のブロックの最後の数字だけが異なる)、これはどれくらい可能性がありますか?これを行うより安全な方法はありますか?

問題は、ある文字を変更して別のクライアントのuuidに問題が発生する可能性がある場合、それぞれ固有のuuidを電子メールで取得することです。

+0

引用したコードの最初の行でどのように生成されているかを示しています。コードがPython標準ライブラリにある 'uuid.uuid1'関数を使用します。 – Phillip

答えて

1

あなたは、ドキュメントの状態としてuuid.uuid1、使用している:

ホストID、シーケンス番号、および現在の時刻からのUUIDを生成します。

あなたはランダム UUIDを生成uuid.uuid4を、使用する必要があります。

1

uuid.uuid1を使用しています(これがデフォルト値です)。 docs

ホストID、シーケンス番号、および現在の時刻からUUIDを生成します。 nodeが指定されていない場合は、getnode()を使用してハードウェア アドレスを取得します。 clock_seqが指定されている場合は、シーケンス番号として使用されます。 それ以外の場合、ランダムな14ビットシーケンス番号が選択されます。

その他のアルゴリズムがあります。お探しのものがuuid4である可能性があります。

関連する問題