from django.db import models class City(models.Model): name = models.CharField(max_length=255) slug = models.CharField(max_length=255) enabled = models.BooleanField() def __str__(self): return self.name class Association(models.Model): STATES = ( ('dronken', 'Dronken'), ('nuchter', 'Nuchter'), ('brak', 'Brak') ) name = models.CharField(max_length=255) short_name = models.CharField(max_length=255) slug = models.CharField(max_length=255) intern = models.CharField(max_length=255, blank=True, null=True) state = models.CharField(max_length=255) city = models.ForeignKey(to=City, on_delete=models.SET_NULL, blank=True, null=True) has_intern = models.BooleanField() enabled = models.BooleanField() extra_states = models.ManyToManyField(to='ExtraState', blank=True, null=True) def __str__(self): return self.name def get_state_display(self): if not self.has_intern: return "Geen intern!" values = dict(list(Association.STATES)) values.update(dict([(x.value, x.name) for x in self.extra_states.all()])) try: return values[self.state] except KeyError: return "Onbekend" class ExtraState(models.Model): name = models.CharField(max_length=255) value = models.CharField(max_length=255) def __str__(self): return self.name