基于关系模型值的模型对象自动创建

2024-04-26 23:55:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型,其中包含一些字段,基于模型中的一个字段值,我们需要在另一个模型中创建n个具有默认值的对象

我有一个名为Room的模型,它包含一个名为number_of_beds的字段,基于该字段,我们需要在名为Bed的模型中创建n个对象

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
 '''

如果床的数量=2,则需要在同一个ForeignKey下使用默认值在床中创建两个对象

任何帮助都将不胜感激


Tags: andof对象no模型truenumbermodel
1条回答
网友
1楼 · 发布于 2024-04-26 23:55:44

简单的解决方案是重写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()

相关问题 更多 >