私は今、私はインスタンスItem(current_site, next_id_on_site)
を作成したいDjangoモデルのauto incrementフィールドを作成するには、unique_togetherの2つのキーを使用しますか?
next_id_on_site = Item.objects.filter(site=current_site).aggregate(current_id=Max("id_on_site"))['current_id']+1
に問題がそう、IDを生成し、Item
を作成する操作はアトミックではないこと、である
class Item(models.Model):
site = Site()
id_on_site = PositiveIntegerField()
ようなモデルを持っています重複したIDを作成する競合状態があるため、.get(site=current_site, id_on_site=someid)
はMultipleObjectsReturned
例外を発生させます。
モデル内でunique_together
を使用すると、自動インクリメントIDの生成には役立たず、DBレベルではまったく実装されていないようです。
id_on_siteはIDを自動生成していますか? –