@airwave

Django Rest Framework, как правильнее реализовать сериалайзеры?

Добрый день!
Допустим есть две модели
class UserProfile(AbstractUser):
    middle_name = models.CharField(max_length=1000, blank=True, null=True)
    type = models.ForeignKey(UserType, blank=True, null=True, on_delete=models.SET_NULL)

class Driver(models.Model):
    first_name = models.CharField(max_length=1000, blank=True, null=True)
    middle_name = models.CharField(max_length=1000, blank=True, null=True)
    last_name = models.CharField(max_length=1000, blank=True, null=True)
    driver_license = models.CharField(max_length=1000, blank=True, null=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, on_delete=models.SET_NULL)


Т.е. есть водители, которые привязыны к определенному юзеру. И сериалайзеры для их чтения:

class UserProfileReadSerializer(serializers.ModelSerializer):
    type = UserTypeSerializer()
    class Meta:
        model = UserProfile
        fields = ['id', 'username', 'last_name', 'first_name', 'middle_name', 'email', 'type', 'password', 'is_superuser', 'last_login', 'date_joined']

class DriverReadSerializer(serializers.ModelSerializer):
    user = UserProfileReadSerializer()
    class Meta:
        model = Driver
        fields = ['id', 'last_name', 'first_name', 'middle_name', 'driver_license', 'user']


Дело в том, что при запросе списка водителей, поле юзера выдает полный набор данных юзера (что в принципе логично и понятно), а в юзере еще и тип юзера вложенный, и это еще доп. данные, и в итоге большая портянка, а хотелось бы выдавать только username для визуального отображения принадлежности водителя к юзеру, и именно username, а не id.
Вопрос: как правильнее это реализовать? Нужно делать отдельный сериалайзер для юзера только с полем username? Или есть решения получше?
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 11:14
65000 руб./за проект
19 апр. 2024, в 11:08
5000 руб./за проект
19 апр. 2024, в 10:59
150000 руб./за проект