Я хотел бы создать систему управления, когда я создаю Project
, проект содержит много TaskGroup
, таких как «To», «Doing» и «Done», и который является типом по умолчанию TaskGroup
называется DefaultTaskGroup
, и администратор может создать несколько других TaskGroup
с различными полями CharField, TextField, DateTimeField, Single или Multiple Choice. и т. д., которые будут сохранены как TaskGoup1 with new field 1 and new field 2
, TaskGroup2 with new field 3 and new field 4
, если я создал новыйзадача, я могу выбрать тип TaskGroup
из списков групп задач (группа задач по умолчанию, TaskGroup1 и TaskGroup2).
Я создал частичные модели, как показано ниже, они не правы, но я озадачен структурой базы данных,Спасибо за чтение, и любые советы будут высоко оценены.
class TaskGroupType(models.Model):
name = models.CharField(max_length=58, null=True)
def __str__(self):
return self.name
class Project(models.Model):
created = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(
UserProjectOwners, null=True, blank=True,
on_delete=models.CASCADE, related_name='Owner'
)
name = models.CharField(max_length=100)
desc = models.CharField(max_length=200, null=True, blank=True)
category = models.CharField(max_length=100, null=True, blank=True)
members = models.ForeignKey(
UserProjectTeam, null=True, blank=True,
on_delete=models.CASCADE, related_name="project"
)
tasktype = models.ManyToManyField(TaskType)
class Meta:
ordering =['created']
verbose_name = "User Table"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class TaskGroup(models.Model):
created = models.DateTimeField(auto_now_add=True)
name = models.CharField(max_length=280, blank=True)
order = models.IntegerField(null=True, blank=True)
project = models.ForeignKey(
Project,
related_name='taskgroups', null=True, blank=True,
on_delete=models.CASCADE
)
class Meta:
ordering =['created']
verbose_name = "Task Group"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class Task(models.Model):
SORT_TYPE = (
(1, "Normal"),
(2, "Urgent"),
(3, "Very Urgent"),
)
createDate = models.DateTimeField(auto_now_add=True)
tasklist = models.ForeignKey(
TaskList,
related_name='tasks', null=True, blank=True,
on_delete=models.CASCADE
)
completed = models.BooleanField(default=False)
accomplished = models.DateTimeField(null=True, blank=True)
desc = models.CharField(max_length=380, blank=True)
name = models.CharField(max_length=180, blank=True)
performer = models.ForeignKey(
User,
related_name='Task', null=True, blank=True,
on_delete=models.CASCADE
)
participant = models.ManyToManyField(
User,
related_name='+'
)
startDate = models.DateTimeField(null=True, blank=True)
dueDate = models.DateTimeField(null=True, blank=True)
priority = models.CharField(max_length=100, choices=SORT_TYPE, null=True, blank=True)
order = models.IntegerField(null=True, blank=True)
remark = models.CharField(max_length=400, null=True, blank=True)
class Meta:
ordering =['createDate']
verbose_name = "Task Table"
verbose_name_plural = verbose_name
def __str__(self):
return self.name