2010-05-21 84 views
0

我有一个class UserProfile定义,它将默认user作为外键。 现在另一个class A有一个外键UserProfile
因此,为了保存类A中的任何实例,我如何为它提供userprofile对象。无法分配 - 必须是“UserProfile”实例

另外,确定class UserProfile是否意味着class user仍然被使用,而class UserProfile只是一些其他表?
我需要知道这一点,因为我必须照顾用户配置文件的创建,所以我应该知道存储在哪里?

- 困惑

+0

我应该为'class user'本身创建一个外键吗? – zubinmehta 2010-05-21 11:18:23

回答

1

所以保存任何情况下A类, 怎么给它USERPROFILE 对象。

  1. 与具有models.OneToOneField(User)models.ForeignKey(User, unique=True)模型创建一个应用程序。
  2. 通过从settings.py文件AUTH_PROFILE_MODULE = 'myapp.UserProfile'指向它,使您的项目知道您的UserProfile。
  3. 阅读documentation

此外,没有使一类用户配置 意味着阶级用户仍在使用, 类用户配置只是一些其他 表?

是的,你的数据库将有一个auth_user和一个user_profile表。这是由于使用UserProfiles并不意味着所有用户都必须具有配置文件。只有在UserProfile模型中定义的附加字段将在user_profile表中。

我需要知道这一点,因为我必须采取 照顾用户配置文件创建的,所以我 应该知道什么获取存储在哪里?

詹姆斯贝内特创造了两个很好的应用程序,几个小时的仔细阅读将有很大的帮助,特别是当涉及到用户注册部分。去看看django-registrationdjango-profiles

+0

谢谢西蒙。我只有一个小小的疑问 - 所以这意味着用户身份验证仍然可以使用普通用户类作为外键在任何需要的地方完成,我不应该使用UserProfile类,除非我关注“配置文件”! – zubinmehta 2010-05-21 13:24:34

+0

我认为这是一个设计问题。如果您的项目的所有用户都有一个配置文件,您可以随时导入UserProfile,但我想只导入用户创建可重用应用程序更为常见。在第一个选项中,您的UserProfile成为所有其他应用程序的依赖关系,这可能不合意。 – 2010-05-21 15:23:37

1

我假设你UserProfile模型用于存储有关用户的其他信息。如果是这样,有documentation要做到这一点的最佳途径,这在简短的是:

  • 定义模型与附加信息字段,你想保存,或您想更多的方法可以有,并将模型中的OneToOneField添加到用户模型中。这将确保您的模型只能为每个用户创建一个实例。
  • 设置AUTH_PROFILE_MODULEmyapp.MyModel,其中myapp是包含您想用来存储关于您的用户的额外信息的型号MyModel的应用程序。
+0

是的,我读过: 有两件事 - 1.是否停止使用'class user'(我已经使用了用户模型的外键) 2.可能需要用户信息的任何其他模型应该是只有'class user'的外键才能工作?或者我将在AUTH_PROFILE_MODULE中设置的新模型将接管?我希望我很清楚。谢谢。 – zubinmehta 2010-05-21 11:26:32

相关问题