У меня есть модели, как показано ниже:
class Skill(models.Model):
name = models.CharField(max_length=100, default="")
class Permit(models.Model):
name = models.CharField(max_length=50)
skill_course = models.ManyToManyField(
Skill, related_name="+", blank=True,
)
class Course(models.Model):
name = models.CharField(max_length=50)
skills = models.ManyToManyField(
Skill, related_name="courses",blank=True,
)
Я хочу отфильтровать объекты Разрешений, которые обладают навыками точного соответствия, присутствующими на курсах (навыки на курсах), поэтому я отфильтровал список курсов и рассматриваемых навыков, как показано ниже:
course = Course.objects.filter(students=self.request.user, date__lt=datetime.datetime.today())
skills = list(Skill.objects.filter(courses__in=course).distinct())
queryset = Permit.objects.filter(skill_course__in=skills)
Но это нечеткое соответствие, а не точное соответствие. Например:
# only if list permit_a = user.skill_a, current user will get permit_a
permit_a = [A, B, C, D]
user.skill_a = [A, B, C, D]
но сейчас user.skill_a = [B, E, F]
, текущий пользователь уже получил permit_a
, я сейчас в ловушке, очень благодарен за любые советы, большое спасибо заранее.