Как выбрать некоторое значение из нескольких таблиц в Django?

Я хочу выбрать некоторых студентов из таблицы A, где имя пользователя и код класса не находятся в таблице B. Таким образом, будут показаны все студенты, которые еще не находятся в списке классов студентов.

запрос был такой

SELECT students from TableA WHERE username NOT IN tableB AND classcode = CODE

models.py

class modelStudentclassss m(models.Model):
    classcode = models.CharField(max_length=200, null=False, blank=False)
    username = models.CharField(max_length=200, null=False, blank=False)
class modelUser(models.Model):
    username = models.CharField(max_length=200, null=False, blank=False)

views.py

studentclass = modelStudentclass.objects.all()
studentdata = modelUser.objects.exclude(studentusername = studentclass.username).filter(role="student", classcode=classcode)

Вы можете работать с:

Studentclass.objects.exclude(username__in=User.objects.values('username')).filter(
    classcode=code
)

Примечание: Модели обычно не имеют префикса Model…. Поэтому лучше переименовать modelUser в User.


Note: Specifying null=False [Django-doc] is not necessary: fields are by default not NULLable.


Note: Specifying blank=False [Django-doc] is not necessary: fields are by default not blank and thus are required by a form.

Вернуться на верх