Если бы у меня была структура модели, подобная этой:
class Camp(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=200, blank=True, null=True)
reg_start = models.DateTimeField()
reg_end = models.DateTimeField()
class Course(models.Model):
camp = models.ForeignKey(Camp, on_delete=models.PROTECT)
name = models.CharField(max_length=100)
description = models.CharField(max_length=500, blank=True, null=True)
class ClassDetail(models.Model):
course = models.ForeignKey(Course, on_delete=models.PROTECT)
seat_count = models.IntegerField()
limit_registrations = models.BooleanField(default=False)
class Registration(models.Model):
person = models.ForeignKey(User, on_delete=models.PROTECT)
class_detail = models.ForeignKey(CourseDetail, on_delete=models.PROTECT)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Если у меня был пользователь, у которого (потенциально) было несколько Registrations
, есть ли быстрый и простой способ получить список идентификаторов из этих лагерей?
Это то, что у меня сейчас есть (что работает, но я пытаюсь понять, смогу ли я устранить понимание списка)
registration_queryset = Registration.objects.filter(
person__id=user_id
)
camps_to_exclude = [
x.course_detail.course.camp.id for x in registration_queryset
]
# camp_list is an already existing queryset of camps
camp_list = camp_list.exclude(
id__in=camps_to_exclude,
)