我是一个多租户Django数据库。我的所有支持多租户的模型都从类AccountSpecificModel
导入,该类作为FK导入到类Account
。现在我在unique=True
中有一些unqiue_together
和Meta
,但没有指定account
。
在我的方案中,AccountSpecificModel
唯一性没有任何分析,除非它处理account
,这意味着我想将每个unique
转换为unique_together
account
1}},以及unique_together
的simlar。
我该怎么做?
答案 0 :(得分:2)
如果我理解正确,这就是你想要的:
class Client(models.Model):
account = models.ForeignKey(Account)
email = models.EmailField()
class Meta:
unique_together = (('account', 'email'),)
注意我分配了unique_together的“两元组”。你可以做一个标准元组,但是如果你想要一个多个字段是唯一的,那么你只需要改变它。
现在,500个不同的帐户可以使用电子邮件example@example.com的客户端,但没有帐户可以拥有2个具有相同电子邮件的客户端。
答案 1 :(得分:0)
我完全不了解你的问题,但我发现在实现复杂的django模型类自定义时,一个好的解决方案是类工厂。我发现它比多重继承和其他魔法更简单,更不令人惊讶。
def factory(superclass, arguments):
class SomeClass(superclass):
[...]
class Meta:
[...]
return SomeClass
RealClass = factory(SuperClass, args)
我在类似的声音问题上尝试了一段时间的其他方法,但是该类的工厂最终解决了这个问题。想一想,它可以帮助您解决问题。