DRF, получить объекты foreignkey с помощью опции

Я пытаюсь сделать бэкенд, используя DRF, и я только что столкнулся с проблемой

Это модели

class SchoolYear(models.Model):
    title = models.CharField(max_length=255, unique=True)

class Student(models.Model):
    name = models.CharField(max_length=10)
    school_year = models.ForeignKey(
        "students.SchoolYear",
        related_name="school_year",
        on_delete=models.CASCADE,
    )


class StudentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Student
        fields = '__all__'

Результат от POSTMAN при использовании опции.


{
    "name": "Student Signup",
    "description": "",
    "renders": [
        "application/json",
        "text/html"
    ],
    "parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ],
    "actions": {
        "POST": {
            "name": {
                "type": "string",
                "required": true,
                "read_only": false,
            },
            "school_year": {
                "type": "field",
                "required": true,
                "read_only": false,
            }
        }
    }
}

Но я хочу получить результат, подобный этому. Потому что я должен передать это front-end разработчику, чтобы он сделал select form

Я хотел бы использовать этот метод, поэтому буду благодарен, если вы сообщите мне, есть ли другой хороший метод.

Спасибо.

{
    "name": "Student Signup",
    "description": "",
    "renders": [
        "application/json",
        "text/html"
    ],
    "parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ],
    "actions": {
        "POST": {
            "name": {
                "type": "string",
                "required": true,
                "read_only": false,
            },
            "school_year": [
                    {
                        "id" : 1,
                        "title": "title1",
                    },
                    {
                        "id" : 2,
                        "title": "title2",
                    },
                    {
                        "id" : 3,
                        "title": "title3",
                    },
                    {
                        "id" : 4,
                        "title": "title4",
                    }
                ]
        }
    }
}

class StudentSerializer(serializers.ModelSerializer):
    school_year_title = serializers.CharField(source='schoolyear.title')
    school_year_id = serializers.CharField(source='schoolyear.id')
    class Meta:
        model = Student
        fields = ('name','school_year_title','school_year_id'

Это должно помочь

Вы можете посмотреть здесь https://www.django-rest-framework.org/api-guide/fields/#source

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