Zuma32

Ambulance Database Models

Aug 7th, 2025
164
0
21 hours
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.41 KB | Source Code | 0 0
  1. # ambulance models , used to define tables in a DB
  2.  
  3. from django.db import models
  4. from users.models import CustomUser
  5.  
  6.  
  7. # Create your models here.
  8.  
  9. class Ambulance(models.Model):
  10.     driver = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
  11.     number = models.PositiveBigIntegerField(verbose_name="ambulance number plate", unique=True, blank=False, null=False)
  12.     # status = models.CharField(max_length=50,
  13.     #     choices=(
  14.     #         ("Available", "available"),
  15.     #         ("Unavailable", "unavailable"),
  16.     #         ("Busy", "busy"),
  17.     #         ("Arrived", "arrived"),
  18.     #         ("On-Route", "on-route")
  19.     #     )
  20.     # )
  21.     latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
  22.     longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
  23.    
  24. # will be changed to emergency later
  25. class AmbulanceRequest(models.Model):
  26.     # user who created request
  27.     user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
  28.     priority = models.CharField(max_length=10, choices=(
  29.         ("Emergency", "Emergency"),
  30.         ("Routine", "Routine"),
  31.     ))
  32.     emergency_details = models.TextField(null=True, blank=True)
  33.     # hosptal has destination
  34.     hospital = models.ForeignKey("Hospital", on_delete=models.CASCADE)
  35.  
  36.     detected_address = models.CharField(max_length=255, blank=True)
  37.  
  38.     STATUS_CHOICES = [
  39.         ('pending', 'Pending'),
  40.         ('assigned', 'Ambulance Assigned'),
  41.         ('completed', 'Completed'),
  42.         ('cancelled', 'Cancelled'),
  43.     ]
  44.     status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending')
  45.  
  46.     # automatically detected location
  47.     latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
  48.     longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
  49.  
  50.     # timestamps
  51.     created_at = models.DateTimeField(auto_now_add=True)
  52.     updated_at = models.DateTimeField(auto_now=True) # saves after every update
  53.  
  54.     def __str__(self):
  55.         return f"EmergencyRequest by {self.user.first_name} {self.user.last_name}   to {self.hospital.name} ({self.status})"
  56.  
  57. class Hospital(models.Model):
  58.     name = models.CharField(max_length=255)
  59.     latitude = models.FloatField(null=True, blank=True)
  60.     longitude = models.FloatField(null=True, blank=True)
  61.  
  62.     def __str__(self):
  63.         return self.name
Advertisement
Add Comment
Please, Sign In to add comment