我知道超級用戶和普通用戶都只是django的用戶對象,但我如何編寫一個自定義用戶類,它需要普通用戶的一些字段,並且不需要這些字段用於超級用戶?在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
你可以有外鍵的用戶配置文件類(比如用戶配置),也就是要創建只有當用戶使用網站的註冊表格註冊時。這樣,在管理站點或通過命令行創建的超級用戶將不需要附加的額外配置文件實例。
相關問題
- 1. 的Django「admin.site.register(......)」只有超級用戶
- 2. 非超級用戶訪問Django管理
- 3. 錯誤:必須是超級用戶才能更改超級用戶
- 4. 如何創建沒有超級用戶帳戶的postgresql超級用戶?
- 5. 如何添加與超級用戶'root'@'localhost'相同的超級用戶
- 6. 在django-nonrel中創建超級用戶
- 7. 在PyCharm中創建超級用戶Django
- 8. 當超級用戶
- 9. Django中刪除超級用戶
- 10. Django:超級用戶的用戶名不會顯示在Users表
- 11. Django的 - 限制超級用戶
- 12. 出錯創建超級用戶的Django
- 13. Django的超級用戶創建問題
- 14. MySQL沒有根/超級用戶
- 15. 無法創建超級用戶Django
- 16. 如何更改Django超級用戶名?
- 17. django @login_required裝飾器超級用戶
- 18. 超級用戶Django模型外鍵
- 19. Django - 意外刪除超級用戶
- 20. Django admin - 模型對超級用戶可見,而非員工用戶
- 21. 不能在Django創建自定義的用戶模型超級用戶1.5
- 22. IntegrityError同時在生產中創建Django超級用戶
- 23. 有沒有辦法在C中調用超級超級#
- 24. Django的nonrel不能登錄爲超級用戶
- 25. Django管理:模型沒有顯示,如果用戶不是超級用戶
- 26. 排除在Django管理員的用戶不超級管理員的字段
- 27. Django超級用戶夾具錯誤 - 沒有這樣的表:auth_user
- 28. PostgreSQL - 只讀「超級用戶」
- 29. 超級用戶問題
- 30. 設計超級用戶
[Django動態模型字段]的可能重複(http://stackoverflow.com/questions/7933596/django-dynamic-model-fields) –