4

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

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

  1. 角色
  2. 联系电话
  3. 其他

我需要详细信息,例如:我需要编写哪个函数以及在哪里执行此操作。

我找到了这个,但我不知道我需要在哪里编写这些步骤。我将不胜感激对此进行更清晰的解释。

4

2 回答 2

4

Django 用户配置文件是您所需要的。您链接到的博客有明确的步骤。您可以查看 Django 文档。http://www.turnkeylinux.org/blog/django-profile也提供了很好的解释。基本上,您需要使用 User as ForeignKey 创建一个新模型,并在settings.pyas中定义模型AUTH_PROFILE_MODULE = "django_app.your_profile_modelname"。创建配置文件并像任何其他模型一样保存它,然后使用user.get_profile()

添加几件事以回答您的以下问题:首先,不要将应用程序创建为目录。按照此处所述使用startapp <appname> [destination]。这将创建应用程序目录。其次,您必须将应用程序添加到INSTALLED_APPS项目的设置文件中,执行syncdb. 基本上,按照Django 教程中的步骤编写您的第一个应用程序。第三,UserProfile是一个单独的模型。它不是User. 它与 相关联,User因为您添加UserForeignKey. 第四,为了能够在 admin 中查看用户配置文件模型,您完全可以将任何其他模型添加到 admin 页面。在您的应用程序下创建一个文件名admin.py

from django.contrib import admin
from myproject.app.models import UserProfile
admin.site.register(UserProfile)
于 2012-07-13T14:47:33.497 回答
1

需要理解三个关键概念:

  1. auth除了真正适合用户登录的有限应用程序之外,Django 中没有内置的“配置文件”系统。您应该自己滚动。
  2. 个人资料记录本身并没有什么神奇之处,它就像任何其他User作为外键的记录(或者,更准确地说,根据 docs 是一对一的字段)。您可以通过创建自定义 django 应用程序(传统上称为profiles)和该应用程序的模型(传统上称为UserProfile,因为Profile不允许作为模型名称)来创建它。
  3. 作为模型的唯一UserProfile区别是您将其指定为,AUTH_PROFILE_MODULE这意味着.get_profile()User记录上调用它时可以访问它。就是这样。如果你这样设置UserProfile

    def UserProfile(models.Model):
        user = models.OneToOneField(User, related_name='profile')
        other fields
    

    那么您也可以访问个人资料user.profile而不是user.get_profile()某些人喜欢的个人资料。

再说一次,轮廓模型并没有什么神奇之处——它只是一个模型记录,就像任何其他模型记录一样。

如果您希望能够在更复杂的用户表单中编辑其他字段;最简单的方法可能是取消注册User,然后使用您的自定义ModelAdmin和表单类再次注册,但根据您的问题判断,您可能还没有达到那个级别。

于 2012-07-13T15:17:37.457 回答