新しいモデルを作成して、現在のパスワードと使用された直近の以前のパスワードを追跡しようとしています。私はそれがこの粗製の例のようになりたい:新しいテーブル(モデル)を作成し、Djangoのauth_userに関連付ける
ID --- CUR_PASS --- PREV_PASS
1 --- 123 --- 321
2 --- 456 --- 654
それは私のAUTH_USER表にIDユーザ名を作ることは可能ですか?ここで
は、これまでのところ、私が持っているクラスです。
# class model to store previously used passwords
class oldPass(models.Model):
# username = models.ForeignKey('something') --> instead of ID?
current_pass = models.CharField(max_length=100)
prev_pass = models.CharField(max_length=100)
class Meta: # meta class to define the table name
db_table = "old_pass"
私はそれはので、私はIDはユーザー名も持っているとAUTH_USERでパスワードを変更する際、に戻って確認することができ作るしようとしていますold_passテーブルを参照し、値が比較されていないことを確認します。それがemの場合は、エラーを返す。私は私がするIDを変更する方法がわからない
- :
私の最大の問題は、これらのです数字の代わりにユーザー名。 (これは、ForeignKeyのを使用して行われますか?)
- 私は#3の変数に渡された...
例に値を比較することができるようにしたい: - 私はUser.set_passwordを実行したいです( (パスがハッシュされるように)、私はUser.save()をコミットする前に、この新しいパスワードを 'current_pass'と 'prev_pass'と比較したいと思います。パスワードが使用されているパスワードのいずれかと一致する場合は、中止します。私は、Djangoの1.9とPython 2.7.13
ので、受信回答や詳細調査を見てUPDATE を使用しています
...これは
from django.contrib.auth.models import User
# class model to store previously used passwords
class oldPass(models.Model):
# username = models.ForeignKey(User) --> instead of ID?
current_pass = models.CharField(max_length=100)
prev_pass = models.CharField(max_length=100)
class Meta: # meta class to define the table name
db_table = "old_pass"
私はあなたが求めているものを理解していません。なぜ 'models.ForeignKey( 'auth.User')'だけではないのですか?なぜあなたはそれがあなたがそれを意味するものであれ "ID"である必要がありますか? –
それは公正だ、私はそれを明確に説明していないと思う。私はIDフィールドを通常の1,2,3,4などのレイアウトの代わりにユーザー名にしたかったのです。下のL.Xiaoの答えから分かるように、IDフィールドはそれほど重要ではありません。私は本当にusername、current_pass、prev_passという3つのフィールドを持ちたいと思います。ユーザ名を設定するには、auth_userテーブルから取得したいと思います。 –