from django.db import models from reversion import revisions as reversion class Status(models.Model): name = models.CharField(max_length=80) def __str__(self): return self.name class Make(models.Model): name = models.CharField(max_length=80) def __str__(self): return self.name class Model(models.Model): # Cause that won't be a confusing name at all name = models.CharField(max_length=80) make = models.ForeignKey('Make', on_delete=models.CASCADE) def __str__(self): return "{} {}".format(self.make.name, self.name) @reversion.register class Vehicle(models.Model): name = models.CharField(max_length=50) # color yom = models.DateField() first_registered = models.DateField() date_purchased = models.DateField() reg_number = models.CharField(max_length=7) vin_number = models.CharField(max_length=50) chassis_number = models.CharField(max_length=50) status = models.ForeignKey('Status', on_delete=models.CASCADE) owner = models.ForeignKey('users.CustomUser', blank=True, null=True, on_delete=models.CASCADE) model = models.ForeignKey('Model', on_delete=models.CASCADE) tax_expires = models.DateField() mot_expires = models.DateField() def __str__(self): return self.name class ICEVehicle(Vehicle): engine_number = models.CharField(max_length=50) capacity = models.IntegerField() class InsurancePolicy(models.Model): vehicle = models.OneToOneField('Vehicle', on_delete=models.CASCADE) # Not always one to one in practice expires = models.DateField() company = models.CharField(max_length=20) class MotorcycleInsurancePolicy(InsurancePolicy): ride_other_bikes = models.BooleanField(default=False) pillion = models.BooleanField(default=False)