2013-07-14 2 views
-1

J'ai un modèle pour les conversations entre deux utilisateurs.Relation de modèle dans Django

class Conversation(models.Model): 
    users = models.ManyToManyField(User) 
    recipient1_pk = models.CharField(max_length=100) 
    recipient2_pk = models.CharField(max_length=100) 

Et j'ai un modèle enfant pour les messages. Je voudrais inclure un champ booléen qui permettrait à chaque utilisateur de basculer la visibilité de la conversation. MAIS je ne veux pas que cela affecte la conversation pour l'autre utilisateur, donc je ne peux pas simplement l'ajouter au modèle de conversation. Existe-t-il un moyen efficace pour moi d'ajouter un champ booléen pour que chaque utilisateur le fasse tout en partageant le même modèle de conversation?

Répondre

2

Jetez un oeil à l'ajout de champs supplémentaires à votre ManyToManyFieldvia the through parameter:

class Conversation(models.Model): 
    users = models.ManyToManyField(User, through='ConversationPreferences') 
    recipient1_pk = models.CharField(max_length=100) 
    recipient2_pk = models.CharField(max_length=100) 

class ConversationPreferences(models.Model): 
    user = models.ForeignKey(User) 
    conversation = models.ForeignKey(Conversation) 
    visibility = models.BooleanField() 
+1

Vous auriez besoin d'une clé étrangère 'modèle Conversation' aussi dans la table si – karthikr

+1

Bonne prise, je l'ai mis à jour l'exemple. –

+0

Je viens de terminer la mise à jour des modèles et il s'est avéré être juste ce dont j'avais besoin. Je vous remercie. –

Questions connexes