我使用django註冊和信號有點問題。 基本設置是我有一個django 1.4.3安裝程序,使用django-south和django註冊(並且db是SQLite,它的價值)。OneToOne引發某些ID問題的用戶字段
編輯:我改變了一點問題,因爲效果是相同的一個外殼,所以註冊是不是原因(編輯是斜體)。
我有一個關於通過以下方式在用戶模式我模型的一個:
class MyUserProfile(models.Model):
user = models.OneToOneFiled(User)
#additional fields
我初始化成使用南方基地。 當我做一個小sqlall
檢查應該在它的SQL,我可以清楚地看到:
CREATE TABLE "myApp_myuserprofile" (
"id" integer NOT NULL PRIMARY KEY
"user_id" integer NOT NULL UNIQUE REFERENCES "auth_user" ("id"),
#other fields
)
在那之後,我想如果用戶激活其賬戶初始化數據。 所以在models.py我把
from django.dispatch import receiver
from registration.signals import user_activated
#Models....
@receiver(user_activated)
def createMyProfile(sender, **kwargs):
currentUser = kwargs['user']
profile = Profile(user = currentUser, #other fields default value)
profile.save()
#And now the reverse relation:
currentUser.myuserprofile = profile
currentUser.save()
雖然我在那裏,似乎一切都沒事,如果我打印的ID(包括用戶和配置文件),如果我來回的2間,我看到一些看起來正確的東西。
如果我停用這部分代碼和使用shell做同一種初始化的,我得到了相同的結果。
但在那之後,everyhting是錯誤的。 如果我打開一個外殼和導入相關的事項,我的每一個X值
MyUserProfile.objects.get(pk=X)
#DoesNotExist Exception
User.objects.get(pk=X).myuserprofile.pk
1
MyUserProfile.objects.all()[X].pk
1
下似乎有點怪不是嗎?
現在,如果我去了SQL殼
select id from myApp_myuserprofile;
1
1
1
1
...
所以我有一個充滿了相同的值所有的地方的主柱。這很好......至少可以說是令人尷尬的(並且會導致問題,因爲每個人都有一個擁有相同Id的個人資料)。
任何想法,這可能是問題的原因,我怎麼能解決呢?
P.S:請注意,從相關關係外鍵是否正確,以及自己的獨特性被保留。