from django.db import models from django.conf import settings from django.contrib.auth import get_user_model def get_sentinel_user(): return get_user_model().objects.get_or_create(username='deleted')[0] class ContainerType(models.Model): named_id = models.CharField(max_length=40, unique=True) description = models.CharField(max_length=200) width = models.IntegerField('width in mm') height = models.IntegerField('height in mm') length = models.IntegerField('length in mm') inner_width = models.IntegerField('inner width in mm', blank=True, null=True) inner_height = models.IntegerField('inner height in mm', blank=True, null=True) inner_length = models.IntegerField('inner length in mm', blank=True, null=True) has_cover = models.BooleanField('container has a cover') contains_container = models.BooleanField('container can bear container') created_ts = models.DateTimeField('datetime created', auto_now_add=True) created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET(get_sentinel_user), related_name='created_container_types') changed_ts = models.DateTimeField('datetime updated', auto_now=True) changed_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET(get_sentinel_user), related_name='changed_container_types') class Container(models.Model): named_id = models.CharField(max_length=40) container_type = models.ForeignKey(ContainerType, on_delete=models.CASCADE) color = models.CharField(max_length=60, blank=True) description = models.CharField(max_length=200, blank=True) created_ts = models.DateTimeField('datetime created', auto_now_add=True) created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET(get_sentinel_user), related_name='created_container') changed_ts = models.DateTimeField('datetime updated', auto_now=True) changed_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET(get_sentinel_user), related_name='changed_container')