模型如下:
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:这样做没有意义:您正在引入数据复制,这是一个反模式。这意味着,如果您现在想要更改例如Room
的name
,则需要修改Rooms
和Available_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