1

我有一个多租户 Django 数据库。我所有启用多租户的模型都从一个类导入,该类AccountSpecificModel作为 FK 导入到一个类Account。现在我有一些unique=Trueunqiue_togetherin Meta,没有指定account

在我的场景中, forAccountSpecificModel唯一性没有任何意义,除非它照顾到account,这意味着我想将每个转换unique为一个unique_togetherwith account,以及类似的 for unique_together

我怎样才能做到这一点?

4

2 回答 2

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 个电子邮件地址相同的客户。

于 2010-01-26T01:38:51.553 回答
0

我没有完全理解你的问题,但我发现在实现复杂的 django 模型类自定义时,一个好的解决方案是类工厂。我发现它没有多重继承和其他魔法那么复杂和令人惊讶。

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

        class Meta:
            [...]

    return SomeClass

RealClass = factory(SuperClass, args)

我在类似的声音问题上尝试了一段时间的其他方法,但该类的工厂最终解决了这个问题。想一想,它可能会帮助你解决你的问题。

于 2010-01-22T16:51:16.823 回答