Несколько свойств с одинаковым типом Django
У меня есть две модели
class Manager(models.Model):
name = models.CharField(max_length=250)
def __str__(self):
return self.name
class Project(models.Model):
title = models.CharField(max_length=250, null=True, blank=True)
work_statement = models.TextField(null=True, blank=True)
contract_id = models.CharField(max_length=250, null=True, blank=True)
note = models.TextField(null=True, blank=True)
customer = models.CharField(max_length=250, null=True, blank=True)
#executer = models.ManyToManyField(Manager)
deadline = models.DateTimeField(null=True, blank=True)
Есть логика Я хочу, чтобы проект модели имел несколько менеджеров в качестве исполнителей, но не все из них, как я могу это сделать?
Например: Проект "N" может включать двух менеджеров для выполнения
я знаю, что этот способ не правильный
class Project(models.Model):
title = models.CharField(max_length=250, null=True, blank=True)
work_statement = models.TextField(null=True, blank=True)
contract_id = models.CharField(max_length=250, null=True, blank=True)
note = models.TextField(null=True, blank=True)
customer = models.CharField(max_length=250, null=True, blank=True)
executer1 = models.ForeignKey(Manager)
executer2 = models.ForeignKey(Manager)
deadline = models.DateTimeField(null=True, blank=True)
Вы можете использовать поле ManyToMany с помощью through. Например, в вашем случае, вы можете использовать следующий код:
class Manager(models.Model):
name = models.CharField(max_length=250)
def __str__(self):
return self.name
class Project(models.Model):
...
executer = models.ManyToManyField(Manager, through='Membership')
class Membership(models.Model):
manager = models.ForeignKey(Manager)
project = models.ForeignKey(Project)
role = models.CharField() # or a foreignkey to Role model