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

Django Query How to compare field with _set filter condition?

我有以下型号

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)

基本上 Review 模型与带保留的外键链接

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()