Добрый день!
Допустим есть две модели
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? Или есть решения получше?