Question

Mon application a des clients qui ont chacun un profil de facturation.

Je suis mon application envisager d'avoir un " Client " modèle avec un attribut appelé " billing_profile " qui référence un autre modèle appelé « BillingProfile ». Plutôt que de définir " BillingProfile " avec une clé étrangère de retour à "Client" (par exemple, " = client models.ForeignKey (client) "), je pensais que depuis là ne sera qu'un profil de facturation pour chaque client que je pourrais simplement utiliser un à un champ à la place. Cela vous semble logique de le faire, ou semble t-il vers l'arrière (alors je dois créer un BillingProfile avant même la création d'un client). Y at-il une bonne façon de le faire par rapport à mon paradigme de la comprendre?

Était-ce utile?

La solution 2

Je compris.

A OneToOneField () peut être consultée dans les deux sens par la méthode simple attribut.

Exemple:

Modèles:

class Client(models.Model):
    ... stuff ...


class BillingProfile(models.Model):
     client = models.OneToOneField('Client')
    ... stuff ...

Maintenant, je peux faire l'une de ces:

spam_client.billingprofile  # returns related BillingProfile Instance

ou

spam_billingprofile.client  # returns related Client instance

Cela signifie que je n'ai pas instancier le BillingProfile jusqu'à ce que je suis prêt, mais je dois encore les avantages que j'aurais si le client avait un attribut billingprofile au lieu de l'inverse.

En d'autres termes:. Je pensais tout à l'envers avant, mais pas trop en arrière

Autres conseils

C'est la façon de le faire, si vous êtes certain est un relation biunivoque. par exemple, pourrait-il y avoir un client avec 2 profils de facturation: un pour un usage personnel et pour son entreprise, etc. ...

Il est pas en arrière, car en utilisant un à un, ou à l'aide d'une clé étrangère n'affecte pas l'ordre de la création (à la fois, vous pouvez créer le profil d'abord, ou créer le client d'abord, puis de les relier).

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