2010-05-21 63 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

相關問題