在Django管理页面中为用户的个人信息添加字段

时间:2012-07-13 14:32:38

标签: django django-admin user-profile

我刚开始一个Django项目(其中没有应用程序)。我在设置文件中激活了admin,可以访问Django管理页面。 Django页面中有一列用于添加用户;在添加用户时,我在个人信息下只获得三个字段,但我需要存储有关用户的更多信息。我用Google搜索,发现我可以使用用户配置文件来完成此操作。我试过了,但我遇到了问题。

我的目标是在用户表中再添加三个字段:

  1. 作用
  2. 联系电话
  3. 其他
  4. 我需要以下细节:我需要编写哪个函数以及在哪里执行此操作。

    我找到this,但我不知道在哪里需要编写这些步骤。我将非常感谢对此的更清楚的解释。

2 个答案:

答案 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)

要理解三个关键概念:

  1. 除了有限的auth应用程序之外,Django中没有内置的“配置文件”系统,它真正适合用户登录。你应该自己动手。
  2. 其中的一个配置文件记录没有什么神奇之处,它就像任何其他记录一样将User作为外键(或者更确切地说,是one-to-one field as per the docs)。您可以通过创建自定义django应用程序(传统上称为profiles)和该应用程序的模型(传统上称为UserProfile来创建它,因为Profile不允许作为模型名称)。
  3. UserProfile分开设置为模型的唯一方法是将其指定为AUTH_PROFILE_MODULE,这意味着在{{1}上调用.get_profile()时可以访问它记录。而已。如果您设置User,请执行以下操作:

    UserProfile

    然后您还可以访问个人资料def UserProfile(models.Model): user = models.OneToOneField(User, related_name='profile') other fields ,而不是某些人喜欢的user.profile

  4. 同样,关于配置文件模型并不神奇 - 它只是一个模型记录,就像任何其他模型记录一样。

    如果您希望能够编辑更复杂的用户表单中的其他字段;最简单的方法可能是取消注册user.get_profile(),然后使用您的自定义User和表单类重新注册它,但根据您的问题判断您可能尚未达到该级别。