私は教師と学生のモデルを持っています。私が学生を作り、同じ名前とメールと教材を持った教師を作り直すと、それは創造されます。大学の同じ人の教師と学生になることはできません。残りのAPIでどのように申請するのですか?djangoで同じ名前の異なるタイプのユーザの認証?
0
A
答えて
0
要件や好みに応じて、これを解決する方法はいくつかあります。
1つの方法では、データベースレベルの制約があります。この場合、ステータスに関係なくすべての人とモデルを作成し、生徒と教師の間で区別する追加のブール値フィールドを追加する必要があります。これは、次のようになります。
class People(models.Model):
email = models.EmailField(unique=True)
is_teacher = models.BooleanField()
unique
は、電子メールは、テーブル全体で一意でなければならないことを意味し、あなたが同じ電子メールで他の人を追加しようとした場合、IntegrityError
が発生します。
このようにunique_together
でいくつかのフィールドで一意に使用する可能性もあります。
class People(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
class Meta:
unique_together = (('first_name', 'last_name'),)
これは、first_nameとlast_nameが一緒に一意でなければならないことを意味します。
もう1つの方法は、学生または教師がすでにfilter()
とexists()
で保存する前に、どちらかのテーブルにあるかどうかを確認することです。
teacher_exists = Teacher.objects.filter(teacher=something).exists()
student_exists = Teacher.objects.filter(student=something).exists()
exists()
クエリセットに結果が含まれている場合はTrueを、そうでない場合はFalseを返します。
関連する問題
- 1. 同じタイプの異なるオブジェクトの異なる名前
- 2. 異なるタイプの同じ名前の呼び出しメソッド
- 3. 同じタイプで、異なる名前空間。
- 4. 異なる認証タイプの同じユーザを設定すると、snmp v3のトラップが機能しない
- 5. JavaScript - 同じ入力タイプではあるが異なる名前の別のアクション
- 6. 複数のDB Django、同じ名前と異なるフィールド名のテーブル
- 7. 同じ名前で異なるタイプのプロパティの後ろにインターフェイスを置く
- 8. 異なる名前の同じ名前のディレクトリの名前を変更する
- 9. 同じ名前でパッケージ名の異なる新しいアプリ
- 10. タイプのメンバー、「メソッド」は、同じ名前
- 11. Django:異なる投稿タイプの同じコメントモデル
- 12. Djangoでのテストでのユーザ認証factory_boy
- 13. 同じバイナリで同じタイプの異なるレイアウト
- 14. 同じ名前で異なるパスのクッキーを削除する
- 15. 異なるタイプのデータベースと同じコード
- 16. ユーザ名とパスワードの認証
- 17. 異なるデバイスで同じ名前のWAMP RPC関数
- 18. 同じタイプ名、同じXSD名前空間を持つWCFサービスタイプ
- 19. Django:認証済みの異なるユーザーモデル
- 20. 同じ名前の2つの異なるファイルタイプを同じ名前の新しいフォルダに移動します
- 21. Django RESTフレームワークでのユーザ認証
- 22. djangoのssl certsによるユーザ認証
- 23. Java:異なるパッケージに同じ名前のクラスのネイティブメソッド
- 24. 異なるスコープ内の同じ名前付き定数のリンカエラー
- 25. Entity Framework 2つのテーブル同じデザインの異なる名前
- 26. 異なるstruts.xmlファイル内のStruts2の同じ名前空間
- 27. 異なるビルドタイプの同じ名前のクラス
- 28. 同じ名前の2つの異なるDLLを持つプロジェクト
- 29. 同じJavaアプリケーションで異なるKerberos KDCで認証する
- 30. 同じDjangoプロジェクトの異なるGITリポジトリ
問題は教師と学生の2つの異なるテーブルがあることです。だから、フィルタリングによる2番目の方法は便利でしょうか? – phantom
誰かがいずれかのテーブルに人を追加しようとすると、その人物が既に学生テーブルまたは教師テーブルに入っているかどうかをチェックしてエラーメッセージを返すか、人を救います。 – Borut