Résolue

Django : système de tickets SAV

# Bases de données # Django

Gabriel Trouvé

Mentor

Salut Thibault !

Je vais attaquer le système de ticket/sav. Je viens de terminer le système de recommandations.
Par exemple sur docstring pour les questions : Tu as un modèle "Question", et un modèle "Message" ?

Je pensais faire un modèle Ticket pour l'app. Et un modèle Message. Les messages seraient rattachés à un unique ticket.

class Ticket(models.Model):
    messages = models.ManytoMany #vers messages

# ou 

class Message(models.Model):
    ticket = ForeignKey # vers Ticket

Souvent j'ai du mal avec ça. Est-ce que les messages je les rattache au ticket dans un manytomany qui est dans Ticket ?

ou par une ForeignKey directement dans Message ?

Je ne sais pas pk j'ai souvent du mal à décider dans quel "sens" gérer ça. Perso je partirai sur un ManotoMany dans ticket

Merci d'avance !

Salut Gab :)

T'inquiète pas, c'est normal de se sentir un peu perdu avec ça, les relations entre modèles sont pas toujours évidentes à déterminer. J'avais ces mêmes difficultés au début, sachant aussi que comme bien souvent, tu peux faire les choses de différentes façons.

Donc, pour revenir à ta question : tu veux que chaque ticket puisse avoir plusieurs messages, mais chaque message doit être lié à un seul ticket, c'est ça ?

Si c'est le cas, je te conseille d'utiliser une relation ForeignKey dans le modèle Message. Cela signifie qu'un message appartient à un seul ticket, tandis qu'un ticket peut avoir plusieurs messages.

Alors, ton modèle de Message ressemblerait à ça :

class Message(models.Model):
    ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)

La logique ici, c'est que tu crées un ticket d'abord, puis tu peux attacher plusieurs messages à ce ticket.

Et le on_delete=models.CASCADE signifie que si le ticket associé est supprimé, tous les messages qui lui sont liés le seront également.

Gabriel Trouvé

Mentor

mais oui cest bien mieux que de definir un manytomany dans ticket.

j'ai toujours ce même doute entre la Foreign dans l'un ou le manytomany dans l'autre

merci !

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.