【发布时间】:2021-11-08 12:33:51
【问题描述】:
我有两个模型,并且都有用户模型的外键:
class UserCostCenter(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
cost_center = models.PositiveIntegerField()
created_date = models.DateTimeField(auto_now_add=True)
start_date = models.DateField(null=False, blank=False)
end_date = models.DateField(null=True, blank=True)
class UserBooking(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
date = models.DateField()
hours = models.DecimalField()
task = models.ForeignKey(UserProject, on_delete=models.DO_NOTHING, null=True, blank=True)
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(null=True, blank=True)
history = HistoricalRecords(table_name='booking_history_userbooking')
现在我想排除没有成本中心的用户预订 目前我正在这样做:
queryset = UserBooking.objects.all()
for booking in queryset:
cost_center = UserCostCenter.objects.filter(
Q(user=booking.user, start_date__lte=booking.date, end_date__gte=booking.date)
| Q(user=booking.user, start_date__lte=booking.date,
end_date=None)).first()
if not cost_center:
queryset = queryset.exclude(id=booking.id)
我不想使用 for 循环排除用户预订对象,请帮助!
【问题讨论】: