我有以下型号的
class Reply(BaseModel):
reply_to = models.OneToOneField(
Review,
on_delete=models.CASCADE,
error_messages={'unique': 'Reply to this review already exists.'})
replied_by = models.ForeignKey(HotelUser, on_delete=models.CASCADE)
基本上,审查模型与保留的外键相关联
class Review(BaseModel):
reservation = models.ForeignKey(Reservation, on_delete=models.CASCADE)
我的预订模型有房间作为的外键
class Reservation(BaseModel):
room = models.ForeignKey(Room, on_delete=models.CASCADE)
房间在外键中与酒店相连
class Room(BaseModel):
hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE)
我有一些员工模型,以这种方式将酒店作为外国钥匙
class Staff(BaseModel):
hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE)
user = models.OneToOneField(HotelUser, on_delete=models.CASCADE)
我的问题是我想要用户的回复,基本上是->酒店用户假设XYZ
是XYZ
酒店的Staff
。
我在clean
方法中尝试过:
def clean(self):
if not self.replied_by.reservation.room.hotel.staff_set.filter(user=replied_by) == self.replied_by:
raiseError
但限制没有任何变化,任何帮助都会有所帮助。
您只需使用:
self.replied_by.reservation.room.hotel.staff_set.filter(user=self.replied_by).exists()