0
私のDjangoアプリケーションで作成された各ユーザにposition
パラメータを割り当てたいとします。位置はラインの下の様々なポイントで変更されますが、ユーザーが作成されるときには、次の最高値に設定する必要があります。モデルの次の値を安全にオブジェクトに与える方法 - Django
次のようにモデルがある:
from django.contrib.auth.models import User
from django.db import models
class Profile(models.Model):
user = models.OneToOneField(User)
position = models.PositiveIntegerField(null=False, default=0, unique=True)
次のように私は、このパラメータを割り当てています現時点では:
user_count = User.objects.all().count()
new_user = User()
new_user.profile.position = user_count + 1
new_user.save()
二人のユーザが同時に登録されている場合は明らかに、そこです同じ値のuser_count
が割り当てられる可能性があります(保存が行われる前に発生した場合)。一意性の制約があると、エラーが発生しますが、安全に解決する方法がわかりません。
一意性を保証するために、どうやってこれを行う必要がありますか(発生する固有の競合に対処するには)?