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)
我的问题是我想要用户的回复,基本上是 ->酒店用户可以说 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()
我有以下型号
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)
我的问题是我想要用户的回复,基本上是 ->酒店用户可以说 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()