Как объединить две разные модели на основе пользователя и отправить один ответ - Django Rest Framework
В моем проекте есть две различные модели. Модель StudentDetail имеет связь один-к-одному с пользователем-студентом, а модель EnrollmentList имеет связь по внешнему ключу с пользователем-студентом. Я хочу объединить информацию из обеих моделей для конкретного студента-пользователя и отправить их как один ответ, а не посылать разные ответы. Ниже приведены модели и их сериализаторы
StudentDetail/models.py
class StudentDetail(models.Model):
id = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4)
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
name = models.CharField(max_length=100, null=True, blank=True)
StudentDetailSerializer
class StudentDetailSerializer(serializers.ModelSerializer):
class Meta:
model = StudentDetail
fields = "__all__"
Enrollment/models.py
class EnrollmentList(models.Model):
id = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4)
student = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='student')
EnrollSerializer
class AllReqs(serializers.ModelSerializer):
class Meta:
model = EnrollmentList
fields = ['id','student_name', 'student_parent_name', 'standard', 'applying_for_standard', "board", 'home_tuition', 'address']
Теперь предположим, что запрос сделан, я хочу объединить информацию из StudentDetail и EnrollmentList для этого конкретного пользователя-студента, чтобы получить сериализованные данные, которые могут выглядеть как показано ниже, и отправить их в виде одного ответа
{
"student_name": name, #from StudentDetail
"home_tuition": home_tuition #from EnrollmentList
}
Пожалуйста, подскажите мне правильный способ сделать это
Определите ваш сериализатор следующим образом:
class AllReqs(serializers.ModelSerializer):
student_name = serializers.CharField(source='student.name')
class Meta:
model = EnrollmentList
fields = ['id','student_name', 'home_tuition']