2011-09-09 54 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

您无法分配模型作为另一种模式的一个领域。它只是不这样工作。除此之外,还有一大堆元类魔法会将模型级别的字段声明转换为实例级别的属性,而这对于您尝试使用​​的模型根本不起作用。

无论如何,我无法真正理解你想要做什么。如果你想在配置文件类中添加额外的数据,只需添加它 - 如果你想要与其他类共享数据的结构,也许子类化会有所帮助。

相关问题