/ / Asociación Django entre tres modelos - django, diseño de base de datos, modelos django

Asociación Django entre tres modelos: django, diseño de base de datos, django-modelos

Tengo estos tres modelos:

  • Persona.
  • Proyecto.
  • Papel.

Usando el sistema de modelos de Django, ¿cómo representar el hecho de que una persona está participando en un proyecto en particular con un rol específico?

Problema general: ¿Cuál es la forma correcta de manejar "asociaciones ternarias"usando Django?

Respuestas

1 para la respuesta № 1

Lo haría utilizando un modelo intermedio para la relación m2m y agregaría un campo allí.
Algo como esto:

class Role(models.Model):
name = models.CharField(max_lenth=32)

class Project(models.Model):
name = models.CharField(max_lenth=32)

class PersonProject(models.Model):
person = models.ForeignKey(".Person")
project = models.ForeignKey(Project)

role = models.ForeignKey(Role)

class Person(models.Model):
projects = models.ManyToManyField(Project, through=PersonProject)