Как получить список существующих имен студентов в Django?

Я новичок в Django rest framework, я хочу получить список фамилий студентов (только когда они существуют). фамилии студентов (только), когда они существуют. может ли кто-нибудь помочь мне?

В моем models.py

class School(models.Model):
    name = models.CharField(max_length=100, null=False, blank=False)
    city = models.CharField(max_length=100, null=False, blank=False)
    street = models.CharField(max_length=100, null=False, blank=False)

    def __str__(self):
        return f"{self.city}->{self.street}->{self.name}"

class Student(models.Model):
    school_id = models.ForeignKey(School, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=100, null=False, blank=False)
    last_name = models.CharField(max_length=100, null=False, blank=False)

    def __str__(self):
        return f"{self.first_name} {self.last_name}"

В моем serializers.py:

class StudentSerializer(serializers.Serializer):
    class Meta:
        model = Student
        fields = ['first_name']
   

class SchoolSerializer(serializers.Serializer):
    is_existing_student = = serializers.BooleanField()
    student = StudentSerializer(many=True, read_only=True)

    class Meta:
        model = School
        fields = ['is_existing_student','student']

В моем views.py:

class schoolViewSet(viewsets.ModelViewSet):
    serializer_class = SchoolSerializer
    queryset = School.objects.all()

На этом рисунке вы можете увидеть, как это должно выглядеть [1]: https://i.stack.imgur.com/bR8cN.png

вы можете попробовать использовать метод values() или values-list() так что вы можете сделать что-то вроде

Student.objects.values_list('first_name') 

или

Student.objects.values('first_name')

https://docs.djangoproject.com/en/3.2/ref/models/querysets/#values-list

попробуйте добавить представление студента в ваш views.py, затем используйте метод values()

class StudentViewSet(viewsets.ModelViewSet):
    serializer_class = StudentSerializer
    queryset = Student.objects.values('first_name')

Из того, что вы определили для поля модели first_name, т.е. null=False, blank=False. Это означает, что поле не может быть пустым.

first_name = models.CharField(max_length=100, null=False, blank=False)

Что означает, что все ваши вызовы моделей всегда будут иметь first_name required

Тем временем, если вы все еще хотите быть уверены, что ваш запрос возвращает элементы с именем first_name, сделайте следующее

queryset = School.objects.exclude(student__first_name=None) 
Вернуться на верх