Django max_length другого атрибута модели - PullRequest
1 голос
/ 18 марта 2019

Я хочу, чтобы целочисленное значение одного атрибута модели было max_length другого атрибута модели, как упомянуто ниже "acity = models.IntegerField ( max_length = Concerthall.capacity ) ".

class Concerthall(models.Model):
    name = models.TextField(max_length=254)
    capacity = models.IntegerField()
    employees = models.IntegerField()

    def __str__(self):
    return self.name

class Events(models.Model):
    name = models.TextField(max_length=254)
    capacity = models.IntegerField(max_length=Concethall.capacity)
    timeFrom = models.DateTimeField()
    timeTo = models.DateTimeField()
    concerthallName = models.ForeignKey(Concerthall, on_delete=models.PROTECT, null=True)

Возможно, он также работает с валидаторами, но я искал несколько часов и не смог найти никакого решения для этого.

1 Ответ

2 голосов
/ 18 марта 2019

Я предлагаю другой подход, делая проверку в моделях clean() метод:

class Events(models.Model):
    name = models.TextField(max_length=254)
    capacity = models.IntegerField(default=0)
    timeFrom = models.DateTimeField()
    timeTo = models.DateTimeField()
    concert_hall = models.ForeignKey(Concerthall, on_delete=models.PROTECT)

    def clean(self):
        if self.capacity > self.concert_hall.capacity:
            raise ValidationError(
                'the capacity of the event cannot exceed the capacity of the hall')
...