35 lines
880 B
Python
35 lines
880 B
Python
from django.db import models
|
|
|
|
|
|
class Project(models.Model):
|
|
class Status(models.TextChoices):
|
|
PLANNING = "planning"
|
|
ACTIVE = "active"
|
|
REVIEW = "review"
|
|
DONE = "done"
|
|
|
|
name = models.CharField(max_length=255)
|
|
client = models.ForeignKey(
|
|
"accounts.CustomUser",
|
|
on_delete=models.CASCADE,
|
|
related_name="client_projects",
|
|
)
|
|
status = models.CharField(
|
|
max_length=20,
|
|
choices=Status.choices,
|
|
default=Status.PLANNING,
|
|
)
|
|
members = models.ManyToManyField(
|
|
"accounts.CustomUser",
|
|
through="accounts.ProjectMembership",
|
|
related_name="projects",
|
|
)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
ordering = ["-updated_at"]
|
|
|
|
def __str__(self):
|
|
return self.name
|