Я работаю на веб-сайте по подбору персонала для программистов, где каждый пользователь может заполнить заявки на программирование в режиме онлайн и увидеть их результаты.
Вот как я смоделировал свои отношения (я пропустил много неважных полей и оставил только интересныеиз них):
Вот мой класс кандидата
class Candidate(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
cases = models.ManyToManyField(Case)
Вот мой класс дела
class Case(models.Model):
title = models.CharField(verbose_name="Titre", max_length=1000)
test1_complete = models.BooleanField(verbose_name="Test 1 Complété", default=False)
test2_complete = models.BooleanField(verbose_name="Test 2 Complété", default=False)
test3_complete = models.BooleanField(verbose_name="Test 3 Complété", default=False)
test4_complete = models.BooleanField(verbose_name="Test 4 Complété", default=False)
Затем я создал двух кандидатов и дело на панели пользователя и связалдва пользователя с делом через поле ManyToMany.булевы поля «Завершить тест» ссылаются на то, выполнил ли пользователь каждый набор тестов для текущего случая.
Вот как я получаю для каждого пользователя вариант «Случай» для его изменения:
def fetch_cases_info(request):
first_case = Candidate.objects.filter(user=request.user).values_list("cases", flat=True)
user_case = Case.objects.get(id=first_case)
Моя проблема в том, что у каждого Кандидата есть один и тот же объект Case, и поэтому, если Пользователь1 завершит тест1 по делу, тогда у каждого Пользователя будет установлено значение true.
Моя цель состоит в том, чтобы при внесении изменений вКейс, сохраненный в поле ManyToMany кандидата, будет вносить изменения только для этого, а не для всех, использующих этот кейс.
Кто-нибудь знает, как смоделировать это отношение?Я бы хотел, чтобы у каждого кандидата было несколько дел, но они должны быть уникальными версиями дела, чтобы я мог изменять его состояние и влиять только на одного кандидата, а не на всех.
Спасибо за ответ.