Автоматическое создание объектов модели на основе значения реляционной модели - PullRequest
0 голосов
/ 08 мая 2019

У меня есть модель, которая содержит несколько полей, основанных на значении одного из полей в модели, нам нужно создать n объектов в другой модели со значениями по умолчанию.

У меня есть модельназывается Room, и он содержит поле с именем number_of_beds, основанное на этом поле. Нам нужно создать n объектов в другой модели с именем Bed.

Room(models.Model):
  room_no = IntegerField(primary_key=True,unique=True)
  number_of_beds = IntegerField()
  '''
  and so on
  '''

Bed(models.Model):
 room_no = models.ForeignKey('Room', on_delete=models.SET_NULL, null=True)
 bed_no = models.IntegerField(blank=True,default='Increment value')
 '''
 and so on
 '''

, если number_of_beds = 2, нужно создать два объекта в Bed по умолчаниюзначения под тем же ForeignKey.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 08 мая 2019

простое решение переопределяет save

Room(models.Model):
  room_no = IntegerField(primary_key=True,unique=True)
  number_of_beds = IntegerField()

  def save(self, *args, **kwargs):
      super().save(*args, **kwargs)
      if self.number_of_beds > 0:
          for num in range(1, self.number_of_beds + 1):
              Bed.objects.get_or_create(room_no=self, bed_no=num)
      # clean extra beds
      self.bed_set.filter(bed_no__gt=self.number_of_beds).delete()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...