I have a set of servers where I get current list of packages installed a few times daily. What is a good way of modelling this into ORM so that one can fetch the latest set of packages for any given server or to be able identify if a package is current on any server or old information.
The basic model I have looks like this:
class Server(models.Model):
hostname = models.CharField(max_length=200)
class Package(models.Model):
name = models.CharField(max_length=255)
version = models.CharField(max_length=255)
class Meta:
unique_together = ("name", "version")
class HostDetails(models.Model):
time = models.DateTimeField()
server = models.ForeignKey(Server, on_delete=models.CASCADE)
packages = models.ManyToManyField(Package)
I am finding the lastest set of packages for a given server using the following:
host_details = HostDetails.objects.filter(host=host).order_by("-time")[0]
host_details.packages.all()