2011-09-09 53 views
0

由於種種原因(特別是,以儘量DB計劃升級更加容易),我需要所有用戶的擴展屬性存儲在另一個對象(如在this question分離Person和Address)在Django存儲有關用戶的其他信息

我有一個AUTH_PROFILE_MODULE覆蓋設置,並捕獲def_user_profile

class CustomUser(models.Model): 
    user = models.ForeignKey(User, unique=True) 

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     CustomUser.objects.create(user=instance) 

的問題是:如果我添加自定義類型屬性CustomUser,像這樣:

class CustomPropertySet(models.Model): 
    this_is_a_Farmer = models.BooleanField() 

class CustomUser(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    extdata = models.CustomProperySet() 

這是否會自動創建在添加新用戶CustomProperySet進入?是否需要將CustomPropertySet與ForeignKey關聯到其CustomUser所有者? 第二個問題:如何在刪除對象時刪除像這樣的擴展屬性?

回答

1

答案很明顯,這些是「嘗試,找出」,但我們是一個有禮貌的人在這裏......

  • 將它自動創建CustomPropertySet?

當您將某些東西分配給extdata時,您分配了什麼東西?指定True和False可能不會起作用,您必須指定一個CustomPropertySet實例,並獲取一個您必須創建的實例。

試試看,這將變得清晰。

  • CustomPropertySet是否需要指向CustomUser實例?

編號CustomProper t ySet可以在所有的寂寞中生存。你的CustomUser指向它,但它並不害羞,並不在乎誰或有多少人指向它。

  • 如何刪除級聯依賴關係?

See the documentation about cascading deletes

1

您無法分配模型作爲另一種模式的一個領域。它只是不這樣工作。除此之外,還有一大堆元類魔法會將模型級別的字段聲明轉換爲實例級別的屬性,而這對於您嘗試使用​​的模型根本不起作用。

無論如何,我無法真正理解你想要做什麼。如果你想在配置文件類中添加額外的數據,只需添加它 - 如果你想要與其他類共享數據的結構,也許子類化會有所幫助。

相關問題