2010-01-22 54 views
1

我是一个多租户Django数据库。我的所有支持多租户的模型都从AccountSpecificModel类别导入,这些类别以FK类型Account。现在我有一些unique=Trueunqiue_togetherMeta,它没有指定account在多租户Django设置中处理唯一性

我的方案,为AccountSpecificModel唯一没有menaing除非它需要照顾account,这意味着我想每个unique转换为unique_togetheraccount,并且simlar为unique_together

我该怎么做?

回答

2

如果我正确理解你,这是你想要什么:

class Client(models.Model): 
    account = models.ForeignKey(Account) 
    email = models.EmailField() 

    class Meta: 
     unique_together = (('account', 'email'),) 

通知“双元组”我分配给unique_together。你可以做一个标准的元组,但是如果有多个字段你想要唯一在一起,你只需要改变它。

现在有500个不同的帐户可以有一个电子邮件[email protected]的客户端,但没有一个帐户可以有2个客户端使用相同的电子邮件。

0

我完全不理解你的问题,但我发现在实现复杂的django模型类定制时,一个好的解决方案是类工厂。我发现它比多重继承和其他魔法更简单,更不令人意外。

def factory(superclass, arguments): 
    class SomeClass(superclass): 
     [...] 

     class Meta: 
      [...] 

    return SomeClass 

RealClass = factory(SuperClass, args) 

我尝试了其他方法处理类似的声音问题一段时间,但班级工厂最终解决了问题。想一想,它可以帮助你解决你的问题。