Je suis un peu nouveau sur django. En écrivant les modèles pour une application que je fais, j'ai eu l'impression de faire quelque chose de mal à cause de toutes les clés étrangères que j'utilisais pour un seul modèle (modèle de ticket spécifique)Beaucoup de clés étrangères dans un modèle, une meilleure façon de faire des modèles?
que je voulais que chaque ticket conserve les informations sur son créateur, à quelle équipe ce ticket est assigné et aux commentaires faits sur le ticket. Et d'autres informations qui n'ont pas besoin de clés étrangères. Est-ce que je fais ça bien? Je ne sais pas pourquoi, mais je pense qu'il y a un meilleur moyen.
class Team(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=2000)
members = models.ManyToManyField(User, through='Team_members')
def __str__(self):
return self.name
class Ticket(models.Model):
name = models.CharField(max_length=200)
creator = models.ForeignKey(User, on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
comments = models.ForeignKey(Comment, on_delete=models.CASCADE)
#worker = models.ForeignKey(User, on_delete=models.CASCADE) *to be finished
description = models.CharField(max_length=500)
status = models.BooleanField(default=False)
date_opened = models.DateTimeField('date opened')
date_closed = models.DateTimeField('date closed',null=True, blank=True)
def __str__(self):
return self.name
class Team_member:
team = models.ForeignKey(Team)
user = models.ForeignKey(User)
date = models.DateTimeField('date joined')
class Comment:
text = models.CharField(max_length=2000)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.text
En outre, un soupçon, [auto_now_add] (https://docs.djangoproject.com/en/1.11/ref/models/ fields/# django.db.models.DateField) vous aidera avec 'DateField' /' DateTimeField' sur 'Team_member' et' date_opened' sur 'Ticket'. – Art
Juste un indice Django: Voyez si GenericRelations aidera votre système. Vous pouvez bénéficier de remplacer le FK Ticket.comments par un GR. https://simpleisbetterthancomplex.com/tutorial/2016/10/13/how-to-use-generic-relations.html – White