Django Model advance Foreignkey Relation
У меня есть модель Django, которая имеет отношения с моделью пользователя. Где пользователи назначаются на группы. особенно "Admin", "Teacher", "Student". Поэтому я хочу сделать связь по внешнему ключу таким образом, чтобы она показывала только тех пользователей, которые были назначены в группы учителей для модели Teacher_details, и аналогично для модели Student_Details. Я создал модели Teacher_Details , Student_Details и установил связь внешнего ключа с моделью User. Но проблема в том, что она показывает всех пользователей, когда я заполняю Student_Details или Teacher_Details. Надеюсь, вы поняли мою проблему. Я надеюсь на положительный ответ.
Код выглядит следующим образом:
class Student_Details(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
image = models.ImageField(default='none', upload_to='img/')
details_updated = models.DateTimeField(auto_now_add=True)
address = models.CharField(max_length=150)
admission_date = models.DateField()
previous_college = models.CharField(max_length=150)
course_enrolled = models.ForeignKey(ModelUniversity,on_delete=models.CASCADE)
semester = models.CharField(max_length=20,choices=semester,default=None)
def __str__(self):
return self.user.first_name
class Teacher_Details(models.Model):
address = models.CharField(max_length=150)
image = models.ImageField(default='none', upload_to='img/')
details_updated = models.DateTimeField(auto_now_add=True)
subject_taught = models.ManyToManyField(to='Student.stu_subject')
user = models.OneToOneField(User,on_delete=models.CASCADE)
def __str__(self):
return self.user.first_name
def subject_teacher_teaches(self):
return [str(s) for s in self.subject_taught.all()]
Поскольку обе модели имеют ссылку на user_id, вы можете использовать эту информацию для поиска обеих моделей на основе запроса и извлечения необходимого экземпляра. Сделайте представление, которое проверяет user_id в запросе, ищет в обеих моделях и возвращает результаты (я предполагаю, что пользователь не может принадлежать к обеим группам...)