【问题标题】:What exactly does Django UserProfile give me?Django UserProfile 到底给了我什么?
【发布时间】:2012-02-17 05:47:55
【问题描述】:

我正在阅读有关 Django 对自定义用户配置文件的支持。我了解,如果我执行以下步骤,我将能够将自定义用户配置文件对象与我的应用程序绑定。

  1. 为 UserProfile 创建一个模型对象,它将 django.contrib.auth.models..User 作为 FK
  2. 将以下内容添加到 settings.py AUTH_PROFILE_MODULE = 'accounts.UserProfile'
  3. 确保 UserProfile 对象可用于每个 User 对象(使用 django 信号或在查询时创建一个)

通过做这一切,我得到的是通过做获得用户个人资料的能力

user.get_profile()

我的问题是,我是否还有其他功能,例如(非管理员)查看/编辑用户个人资料的视图?

【问题讨论】:

    标签: django user-profile


    【解决方案1】:

    根本没有添加任何功能。 Django 唯一要做的就是提供一种简单的方法(通过get_profile)来反转django 的默认contrib.auth.models.User 和自定义模型(通常是UserProfile - 尽管这可能是任何东西)之间的关系。另一种方法是自己扭转关系,例如:

    my_user.userprofile_set.all()[0]
    

    这显然不方便。

    如果您想要添加功能,您需要查看django-profiles(添加用于编辑配置文件的视图)和django-registration(添加注册视图)之类的内容

    【讨论】:

    • 谢谢。我是 django 的新手,也是 Python 的新手。你能解释一下'my_user.userprofile_set.all()[0]'的作用吗?
    • 如果你有一个UserProfile 对象并且你想获得相关的User,你只需通过访问外键属性来遵循关系“转发” - my_user_profile.user。或者,如果您有一个User 对象,并且您想获取相关的UserProfile 对象,您也可以遵循“向后”的关系。但是(从技术上讲)可能有多个 UserProfiles 用于单个 User,因此您可以得到所有 userprofile_set.all() 并从生成的查询集 [0] 中选择第一个:docs.djangoproject.com/en/dev/topics/db/queries/…
    • 谢谢。我很困惑,因为我的 UserProfile 有一个用户的“唯一=真”属性。我应该意识到其他配置也是可能的。
    • unique=True 是有道理的,因为这意味着UserProfile 只能属于一个特定的User,但您可以省略这意味着从技术上讲,每个@987654343 可能有不止一个UserProfile @(虽然我不确定get_profile 会如何管理这个)
    【解决方案2】:

    用户配置文件只允许您扩展标准用户模型。您不会获得任何额外的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-23
      • 2018-08-25
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多