Brak opisu

models.py 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from django.db import models
  2. from django.contrib.auth.models import User
  3. class Vehicle(models.Model):
  4. user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='vehicles', default=1)
  5. make = models.CharField(max_length=255)
  6. model = models.CharField(max_length=255)
  7. year = models.IntegerField()
  8. license_plate = models.CharField(max_length=100, unique=True)
  9. capacity = models.IntegerField()
  10. status = models.CharField(max_length=50) # e.g., available, in use, under maintenance
  11. def __str__(self):
  12. return f'{self.make} {self.model} ({self.year}) - {self.license_plate}'
  13. class Trip(models.Model):
  14. vehicle = models.ForeignKey(Vehicle, related_name='trips', on_delete=models.CASCADE)
  15. driver = models.ForeignKey(User, related_name='trips', on_delete=models.CASCADE)
  16. start_location = models.CharField(max_length=255)
  17. end_location = models.CharField(max_length=255)
  18. start_time = models.DateTimeField()
  19. end_time = models.DateTimeField()
  20. mileage = models.FloatField()
  21. fuel_consumption = models.FloatField()
  22. class MaintenanceLog(models.Model):
  23. vehicle = models.ForeignKey(Vehicle, related_name='maintenance_logs', on_delete=models.CASCADE)
  24. date = models.DateTimeField()
  25. description = models.TextField()
  26. mileage = models.FloatField()
  27. class Appointment(models.Model):
  28. vehicle = models.ForeignKey(Vehicle, related_name='appointments', on_delete=models.CASCADE)
  29. start_time = models.DateTimeField()
  30. end_time = models.DateTimeField()
  31. purpose = models.CharField(max_length=255)
  32. created_at = models.DateTimeField(auto_now_add=True)
  33. updated_at = models.DateTimeField(auto_now=True)
  34. class GPSData(models.Model):
  35. vehicle = models.ForeignKey(Vehicle, related_name='gps_data', on_delete=models.CASCADE)
  36. latitude = models.FloatField()
  37. longitude = models.FloatField()
  38. timestamp = models.DateTimeField(auto_now_add=True)
  39. class FuelTransaction(models.Model):
  40. vehicle = models.ForeignKey(Vehicle, related_name='fuel_transactions', on_delete=models.CASCADE)
  41. date = models.DateTimeField()
  42. amount = models.FloatField()
  43. price_per_liter = models.FloatField()
  44. total_cost = models.FloatField()
  45. fuel_card_number = models.CharField(max_length=100)