ich habe eine Verständnisfrage zur models.py. Meine Datei sieht wie folgt aus.
Code: Alles auswählen
from django.db import models
class Project(models.Model):
name = models.CharField(max_length=100, blank=True, null=True, unique=True)
cost_bearer = models.CharField(max_length=6, blank=False, null=False, unique=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return f'{self.cost_bearer} {self.name}'
class System(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE)
number = models.CharField(max_length=4, blank=False, null=False)
name = models.CharField(max_length=100, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
constraints = [
models.UniqueConstraint(fields=['project', 'number'], name='unique_system')
]
def __str__(self):
return f'{self.number} {self.name}'
class Department(models.Model):
name = models.CharField(max_length=10, blank=False, null=False, unique=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class Employee(models.Model):
department = models.ManyToManyField(Department)
name = models.CharField(max_length=100, blank=False, null=False, unique=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class Responsibility(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, blank=False, null=False)
system = models.ForeignKey(System, on_delete=models.CASCADE, blank=False, null=False)
department = models.ForeignKey(Department, on_delete=models.SET_NULL, blank=False, null=True)
employee = models.ForeignKey(Employee, on_delete=models.SET_NULL, blank=False, null=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
constraints = [
models.UniqueConstraint(fields=['project', 'system', 'department', 'employee'], name='unique_responsibility')
]
def __str__(self):
return f'{self.project} | {self.system} | {self.department} | {self.employee}'
class Problem(models.Model):
responsibility = models.ForeignKey(Responsibility, on_delete=models.CASCADE, blank=False, null=False)
description = models.TextField(max_length=2000, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return f'{self.responsibility} | {self.description}'
class Solution(models.Model):
problem = models.ForeignKey(Problem, on_delete=models.CASCADE, blank=False, null=False)
description = models.TextField(max_length=2000, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.description
class Status(models.Model):
responsibility = models.OneToOneField(Responsibility, on_delete=models.CASCADE, blank=False, null=False)
COLORS = (
('0', 'Rot'),
('1', 'Gelb'),
('2', 'Grün'),
)
traffic_light = models.CharField(max_length=4, choices=COLORS, blank=False, null=False, default='Grün')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.traffic_light
Ich würde das Model gerne von Anfang an korrekt aufbauen um nicht später wieder die Hälfte umstellen zu müssen.
Viele Grüße
gospat