Question

J'ahve un locataire à plusieurs base de données Django. Tous mes locataires multi-modèles a permis d'importer à partir d'une AccountSpecificModel de classe, qui comme FK à un Account de classe. Maintenant, j'ai quelques unique=True et unqiue_together dans Meta, qui ne précise pas account.

Dans mon scénario, pour l'unicité de AccountSpecificModel n'a pas menaing à moins qu'il prend soin de account, ce qui signifie que je veux convertir chaque unique à un unique_together avec account et simlar pour unique_together.

Comment puis-je faire?

Était-ce utile?

La solution

Si je comprends bien, c'est ce que vous voulez:

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

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

Remarquez la "deux-tuple" Je unique_together à affecté. Vous pouvez faire un tuple standard, mais s'il y a plus d'un champ que vous voulez être unique ensemble, vous aurez juste à changer de toute façon.

500 comptes différents peuvent avoir un client avec l'e-mail example@example.com, mais aucun compte ne peut avoir 2 clients avec le même email.

Autres conseils

Je ne comprends pas votre question tout à fait, mais je trouve que la mise en œuvre des personnalisations de classe modèle django complexe une bonne solution est une usine de classe. Je trouve qu'il est moins compliqué et moins surprenant que l'héritage multiple et d'autres magie.

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

        class Meta:
            [...]

    return SomeClass

RealClass = factory(SuperClass, args)

J'ai essayé d'autres approches sur un problème de sondage similaire pendant un certain temps, mais une usine de classe résolu le problème à la fin. Pensez-y, il peut vous aider à résoudre votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top