Несколько свойств с одинаковым типом 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

Прочитайте следующие документы

djangoproject

санкалпджонна

Вы можете использовать поле 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
Вернуться на верх