スーパーユーザと普通のユーザはどちらもちょうどdjangoのUserオブジェクトですが、普通のユーザにはいくつかのフィールドを必要とし、スーパーユーザにはそのフィールドを必要としないカスタムユーザクラスを書くにはどうすればよいですか?Djangoでは、スーパーユーザがスーパー以外のユーザとは異なるフィールドを持つことは可能でしょうか?
1
A
答えて
0
データベース内の構造は複雑ではありません。例えば、JSONFieldsは、アプリが成長したときに飼い慣らすのが非常に難しいかもしれません。
私はそれを "シンプル"にしようと考えています - より保守性があります(あなたが将来モデルを拡張したいかもしれないようなことをしなければならないと想像します)。これが新しいプロジェクトの場合は、簡単にchange the default user modelすることができます。しかし、それはあなたのケースであなたを助けるかもしれません。
from django.db import models
from django.contrib.auth.models import AbstractBaseUser
class Mortal(AbstractBaseUser):
is_superuser = False
username = models.CharField(max_length=256)
first_name = models.CharField(max_length=256)
last_name = models.CharField(max_length=256)
class Admin(AbstractBaseUser):
is_superuser = True
username = models.CharField(max_length=256)
、その後make your own authentication backend:
class MyBackend(object):
"""
Danger! A backend to authenticate only via username
"""
def authenticate(self, username=None):
try:
return Mortal.objects.get(username=username)
except Mortal.DoesNotExist:
try:
return Admin.objects.get(username=username)
except Admin.DoesNotExist:
return None
1
は、あなたが作成されるユーザーへの外部キーを持つプロファイルクラス(たとえばのUserProfile)を持つことができます
あなたは常に2つのモデルを作ることができますユーザーがウェブサイトの登録フォームを使用してサインアップした場合のみ。このようにして、管理サイトやコマンドラインから作成されたスーパーユーザーは、追加のプロファイルインスタンスを追加する必要はありません。
関連する問題
- 1. SparseArrayに2つの異なるクラスを持つことは可能ですか?
- 2. スーパーユーザ以外のすべてのユーザのDjango Restフレームワークを制限
- 3. Nutchで異なるフェッチ間隔を持つことは可能ですか?
- 4. このケースではレスポンシブなデザインが可能でしょうか?
- 5. djangoアプリケーションは、ユーザのウィンドウ(ドメイン名)を知ることは可能ですか?
- 6. 他のユーザが `SECRET =" ... "`を見ることは可能ですか?
- 7. jquery呼び出しで外部リンクを持つことは可能ですか?
- 8. Spring:autowiring中に異なる修飾子を持つ重複したコンストラクタを持つことは可能ですか?
- 9. 応答しないスクリプト - 回避することは可能でしょうか?
- 10. このスクリプトを一般化することは可能でしょうか?
- 11. 他のタイプと比較することは可能でしょうか?
- 12. 他のサイトで窓を閉めることは可能でしょうか
- 13. アイコンフォントに異なるフォントファミリーを割り当てることは可能でしょうか?
- 14. RFBプロトコルを中継するピアツーピア接続を持つことは可能でしょうか?
- 15. ListViewが子ビューを持つことは可能ですか
- 16. WPF ListView:行がサブローを持つことは可能ですか?
- 17. 例外なくRAIIを行うことは可能ですか?
- 18. ビデオコンテンツをJavaScriptでエンコードすることは可能でしょうか?
- 19. nodejsでマルチスレッドを実現することは可能でしょうか?
- 20. junitレポートでsystem.out.print(text)を見ることは可能でしょうか?
- 21. 広告で美しいウェブサイトを書くことは可能でしょうか?
- 22. インターネットの使用場所を知ることは可能でしょうか?
- 23. 他のオブジェクトにモジュールパターンを使用することは可能でしょうか
- 24. マップコントロールの下にオーバーレイを表示することは可能でしょうか?
- 25. 私のRadioSelectに余分なテキストを持たせることは可能でしょうか
- 26. ListActivityでList以外のコンポーネントを使用することは可能ですか
- 27. ボタンのようなカスタムfacebookを持つことは可能ですか?
- 28. Zimbraユーザを外部LDAPサーバに保存することは可能ですか?
- 29. 2つ以上の単語の列挙型を持つenumクラスを持つことは可能ですか?
- 30. Djangoの追加フィールドは、それがあることを定義することは可能です
[Django動的モデルフィールド]の複製が可能です(http://stackoverflow.com/questions/7933596/django-dynamic-model-fields) –