Как определить отношения в Django Models таким образом, чтобы место в модели могло быть выделено объекту без перекрытия?

Мне нужно определить модель в Django таким образом, чтобы она проверяла, что объекты сервера могут поместиться в рассматриваемый объект стойки, не перекрывая друг друга, и что вы используете только столько места (в Us), сколько у вас на самом деле есть в стойке. Я попробовал определить модель Django следующим образом:

from django.db import models
class Location(models.Model):
    name = models.CharField(max_length =200)

    def __str__(self):
        return str(self.name)

class Rack(models.Model):
    id = models.IntegerField(primary_key = True, auto_created = True)
    size = models.IntegerField()
    location = models.ManyToManyField(Location)
    def __str__(self):
        return str(self.id)
class Server(models.Model):
    id = models.IntegerField(primary_key= True, auto_created=True)
    size = models.IntegerField()
    rack_id = models.ForeignKey(Rack, on_delete=models.CASCADE)
    owner = models.CharField(max_length = 200)
    locations = models.OneToOneField(Location, on_delete=models.CASCADE)

    def __str__(self):
        return  str(self.id)

Я не знаю, как определить местоположение таким образом, чтобы при выборе места для сервера, он был назначен на место в стойке, не перекрывая это место другим сервером. В то же время, мне нужно убедиться, что я использую только столько места (в Us), сколько у меня на самом деле есть в стойке.

Вернуться на верх