如何将数据从模型复制到Django中过滤后的另一个模型?



模型如下:

class Rooms(models.Model):

name=models.CharField(max_length=100)
image=models.URLField()
max_person=models.CharField(max_length=100)
office=models.CharField(max_length=200)
status=models.CharField(max_length=200)
cost=models.CharField(null=True,max_length=250)
roomId=models.CharField(max_length=100,null=True)
Address= models.CharField(max_length=100,null=True)
def __str__(self):
return str(self.name)

class Available_Rooms(models.Model):
users=models.ForeignKey(Rooms,on_delete=models.CASCADE)
name=models.CharField(max_length=100)
image=models.URLField()
max_person=models.CharField(max_length=100)
office=models.CharField(max_length=200)
status=models.CharField(max_length=200)
cost=models.CharField(null=True,max_length=250)
roomId=models.CharField(max_length=100,null=True)
Address= models.CharField(max_length=100,null=True)
def __str__(self):
return str(self.name)

at model "rooms"有100个对象(房间)

和我想要过滤它并列出maxperson = 4的房间

availablity= Rooms.objects.filter(maxperson="4").all()

,并希望将房间详细信息复制到另一个模型"Available_Rooms">

你知道怎么做吗?万分感谢

,想把房间的细节复制到另一个模型Available_Rooms

Pleasedon't:这样做没有意义:您正在引入数据复制,这是一个反模式。这意味着,如果您现在想要更改例如Roomname,则需要修改RoomsAvailable_Rooms。这将引入许多额外的逻辑来保持房间同步。

例如,您可以添加一个BooleanField来确定房间是否可用,

class Room(models.Model):
name = models.CharField(max_length=100)
image = models.URLField()
max_person = models.IntegerField()
office = models.CharField(max_length=200)
status = models.CharField(max_length=200)
cost = models.IntegerField(null=True)
room_id = models.CharField(max_length=100,null=True)
address = models.CharField(max_length=100)
available= models.BooleanField(default=False)

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

然后你可以让所有房间的max_person=4可用:

Room.objects.filter(max_person=4).update(available=True)

注意:通常Django模型的名字是单数,所以Room而不是Rooms.


注意:通常Django模型中的字段名写成snake_case,而不是PascalCase,所以应该是:room_id而不是roomId

最新更新