id
のように、オブジェクトを作成した後に一意で生成されるように設定するにはどうすればよいですか?任意のidのようなキーを設定するには?
各オブジェクトに識別子を割り当てて、user
がこのIDで製品を識別できるようにしたいと思いますが、私はそれを10桁の数字で構成したいので、通常の自動インクリメントIDにしたくありません。 (私のpkは1,2...inf
です)。
私がこれまで行ってきたことは、名前のハッシュを作成しようとしたことですが、それを行うには良い方法ではありません。
class Job(models.Model):
job_id = models.BigIntegerField() # or hash(something)
customer = models.ForeignKey(User, related_name='orders', help_text=_("Customer"), on_delete=models.CASCADE)
translator = models.ForeignKey(User, related_name='jobs', null=True, blank=True, help_text=_(u"Translator"))
price = models.FloatField(null=True, blank=True, help_text=_(u"Price"))
1つの可能な方法は、ランダムな10桁の番号を生成して、一意性をチェックしますpost_save
signal
を作成することですが、それはおそらく非常にソリューションを消費しています。
プロジェクトが進行中ですので、私はidとuuidを混乱させたくありません。私はちょうどPK、ユニークな、ユーザーのための識別子ではないです。それで、私はprimary_keyをユニークに変更する必要がありますか? –
私はそれを取得しません。あなたは代替案について尋ねました、ここにあります。主キーは常に一意で、[ここ](http://stackoverflow.com/questions/30911898/mysql-is-primary-key-unique-by-default)を参照してください。 – arogachev
両方を混ぜることはお勧めしません。 idまたはuuidのどちらかを使用する方が良いです。 – arogachev