我知道超級用戶和普通用戶都只是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管理
- 2. 如何創建沒有超級用戶帳戶的postgresql超級用戶?
- 3. 在PyCharm中創建超級用戶Django
- 4. 在django-nonrel中創建超級用戶
- 5. Django中刪除超級用戶
- 6. Django:超級用戶的用戶名不會顯示在Users表
- 7. Django的 - 限制超級用戶
- 8. Django - 意外刪除超級用戶
- 9. django @login_required裝飾器超級用戶
- 10. 超級用戶Django模型外鍵
- 11. Django admin - 模型對超級用戶可見,而非員工用戶
- 12. IntegrityError同時在生產中創建Django超級用戶
- 13. Django的nonrel不能登錄爲超級用戶
- 14. 排除在Django管理員的用戶不超級管理員的字段
- 15. Django超級用戶夾具錯誤 - 沒有這樣的表:auth_user
- 16. 超級用戶問題
- 17. dokku-alt postgres超級用戶
- 18. 設計超級用戶
- 19. 限制超級用戶以外的所有用戶使用Django Rest Framework
- 20. Django - 有什麼方法可以隱藏用戶列表中的超級用戶嗎?
- 21. 超級有一個讓用戶下載發票pdf的API嗎?
- 22. 超級用戶運行時sed工作方式不同嗎?
- 23. 具有非必填字段的Django MultiValueField
- 24. 用戶postgres和超級用戶有什麼區別?
- 25. 如何不需要超級用戶的擴展用戶模型字段
- 26. 安全超級用戶帳戶部署
- 27. Django的用戶模型,其中超級用戶有顯示名稱,但不是普通用戶
- 28. 如何列出其中的超級用戶有權在Windows Server
- 29. Django:如果用戶不是超級用戶,則隱藏模板中的按鈕
- 30. Django:如何爲具有不同必填字段的用戶建模
[Django動態模型字段]的可能重複(http://stackoverflow.com/questions/7933596/django-dynamic-model-fields) –