私のモデル:Djangoモデルでは、どのようにしてflushで1にリセットされるフィールドを作成できますか?
class User(models.Model) :
"""Model for a Person"""
email = models.EmailField(unique=True)
groups = models.IntegerField(default=0)
name = models.CharField(max_length=254, blank=True, null=True)
phone = models.CharField(max_length=10, blank=True, null=True)
sex = models.CharField(max_length=7, blank=True, null=True)
このクラスは、既にID主キーを持っています。私は、データベース内のエントリを次のようしている。
In [23]: temp = User.objects.all()
In [24]: temp
Out[24]: [<User: [email protected]>, <User: [email protected]>]
In [25]: temp[0].id
Out[25]: 15
In [26]: temp[1].id
Out[26]: 16
を今、私は実行すると:ここ
python manage.py flush
は私のデータベースがどのように見えるかです:
In [27]: User.objects.all()
Out[27]: []
私は、新しいユーザーを追加するときに今はしています前の出力からのの後のID。
In [28]: x = User(email="[email protected]")
In [29]: x.save()
In [30]: x.id
Out[30]: 17
私は、主キーは、彼らが残したところ後も継続することを、答えStack Overflow answerを読みました。私もそれでうまくいくので、この振る舞いを変えたくありません。代わりに、私が望むのは、dbがフラッシュされた後に再び1から始まる別のフィールドを作成することです。私はこの動作に依存するいくつかのロジックを持っています。フラッシュ時に1にリセットされる整数型の自動インクリメントフィールドを作成できるように教えてください。
私はデータベースとしてsqlite3を使用しています。あなたはmanage.py dbshell
delete from your_table;
delete from sqlite_sequence where name='your_table';
でこのコマンドを実行することができます