Django查询如何将字段与_set过滤条件进行比较



我有以下型号的

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)

我的问题是我想要用户的回复,基本上是->酒店用户假设XYZXYZ酒店的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()

相关内容

  • 没有找到相关文章

最新更新