我有一个模型,其中包含一些字段,基于模型中的一个字段值,我们需要在另一个具有默认值的模型中创建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
'''
如果number_of_beds = 2,则需要在Bed中使用默认值在同一外键下创建两个对象。
任何帮助将不胜感激。
答案 0 :(得分:1)
一个简单的解决方案是覆盖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()