Я использую DRF, и у меня есть сериализатор профиля с полем группы, которое является моделью ForeignKey to Group.Сериализатор профиля:
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('group', ...)
Модель профиля:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
# other fields
group = models.ForeignKey(Group, on_delete=models.CASCADE)
Модель группы:
class Group(models.Model):
title = models.CharField(max_length=100)
def __str__(self):
return self.title
Сериализатор группы:
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = ('title', 'id')
extra_kwargs = {'id': {'read_only': True}}
У меня естьмаршрут в моем SPA, который показывает список профилей.Я хочу показать заголовок группы для каждого профиля, но этот сериализатор предоставляет мне только идентификатор группы, и я не хочу создавать другое представление, чтобы получить идентификатор группы и дать мне заголовок.поэтому я искал об этом, и это было сначала решение StringRelatedField
, то есть read_only
и SlugRelatedField
.Я изменил ProfileSerializer
и добавил SlugRelatedField
следующим образом:
class ProfileForAdminSerializer(serializers.ModelSerializer):
group = serializers.SlugRelatedField(
many=False,
queryset=Group.objects.all(),
slug_field='title'
)
class Meta:
model = Profile
fields = ('group', ...)
Теперь у меня есть доступ к заголовку группы профилей, но проблема в том, что мне нужно создать профиль с указанием заголовка поля группы, но я хочусоздать профиль, как и прежде, с отправкой идентификатора группы, а также иметь доступ к заголовку группы без отправки другого запроса.(извините за плохой английский)