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