from django.db import models from closuretree.models import ClosureModel class Section(models.Model): name = models.CharField(max_length=255) def __str__(self): return self.name class Meta: ordering = ('name',) class Headline(models.Model): name = models.CharField(max_length=255) section = models.ForeignKey(Section) acronym = models.CharField(max_length=10) overview = models.TextField(max_length=2000, null=True, blank=True) def __str__(self): return '{} - {}'.format(self.acronym, self.name) class Meta: ordering = ('name',) class Standard(ClosureModel): name = models.CharField(max_length=255) parent = models.ForeignKey('self', related_name='children', null=True, blank=True) headline = models.ForeignKey(Headline, related_name='standards') order = models.IntegerField() @property def structure(self): return '.'.join([str(x.order) for x in self.get_ancestors()] + [str(self.order)]) def __str__(self): return '{}.{}'.format(self.headline.acronym, self.structure) class Meta: ordering = ('headline__acronym',)