我刚开始一个Django项目(其中没有应用程序)。我在设置文件中激活了admin
,可以访问Django管理页面。 Django页面中有一列用于添加用户;在添加用户时,我在个人信息下只获得三个字段,但我需要存储有关用户的更多信息。我用Google搜索,发现我可以使用用户配置文件来完成此操作。我试过了,但我遇到了问题。
我的目标是在用户表中再添加三个字段:
我需要以下细节:我需要编写哪个函数以及在哪里执行此操作。
我找到this,但我不知道在哪里需要编写这些步骤。我将非常感谢对此的更清楚的解释。
答案 0 :(得分:4)
Django用户配置文件是您所需要的。您链接的博客有明确的步骤,如何做到这一点。您可以查看Django文档。 http://www.turnkeylinux.org/blog/django-profile也提供了一个很好的解释。
基本上,您需要使用User as ForeignKey创建一个新模型,并将settings.py
中的模型定义为AUTH_PROFILE_MODULE = "django_app.your_profile_modelname"
。创建配置文件并像保存其他模型一样保存,并使用user.get_profile()
根据以下问题添加以下内容:
首先,不要将应用程序创建为目录。使用此处所述的startapp <appname> [destination]
。这将创建应用程序目录。
其次,您必须在项目的设置文件中将应用添加到INSTALLED_APPS
,执行syncdb
。基本上,请按照Django tutorial on writing your first app中的步骤操作。
第三,UserProfile
是一个单独的模型。它不是User
的扩展。它与User
相关联只是因为您添加了User
作为ForeignKey
。
第四,为了能够在管理员中查看用户个人资料模型,您可以完全按照do to add any other model to admin page进行操作。在您的应用下创建一个文件名admin.py
:
from django.contrib import admin
from myproject.app.models import UserProfile
admin.site.register(UserProfile)
答案 1 :(得分:1)
要理解三个关键概念:
auth
应用程序之外,Django中没有内置的“配置文件”系统,它真正适合用户登录。你应该自己动手。User
作为外键(或者更确切地说,是one-to-one field as per the docs)。您可以通过创建自定义django应用程序(传统上称为profiles
)和该应用程序的模型(传统上称为UserProfile
来创建它,因为Profile
不允许作为模型名称)。将UserProfile
分开设置为模型的唯一方法是将其指定为AUTH_PROFILE_MODULE
,这意味着在{{1}上调用.get_profile()
时可以访问它记录。而已。如果您设置User
,请执行以下操作:
UserProfile
然后您还可以访问个人资料def UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
other fields
,而不是某些人喜欢的user.profile
。
同样,关于配置文件模型并不神奇 - 它只是一个模型记录,就像任何其他模型记录一样。
如果您希望能够编辑更复杂的用户表单中的其他字段;最简单的方法可能是取消注册user.get_profile()
,然后使用您的自定义User
和表单类重新注册它,但根据您的问题判断您可能尚未达到该级别。