Определенный набор запросов в SlugRelatedField для сериализатора DRF - PullRequest
0 голосов
/ 30 мая 2018

Я хочу сериализовать несколько объектов.У SlugRelatedField для «Дескрипторов», которые имеют уникальные имена в одном проекте, но одно и то же имя может встречаться в разных проектах.

Использование этой строки в моем сериализаторе:

row = serializers.SlugRelatedField(slug_field="name",
queryset=Descriptor.objects.all() )

вызываетошибка, потому что возвращается несколько дескрипторов.Мне нужно что-то вроде этого: row = serializers.SlugRelatedField(slug_field="name", queryset=Descriptor.objects.filter(project=projectid))

При проверке это вызывает NameError: name 'projectid' is not defined.Могу ли я передать переменную projectid при вызове метода is_valid, чтобы я мог указать набор запросов?

1 Ответ

0 голосов
/ 30 мая 2018

После дальнейшего поиска я нашел решение, которое, кажется, работает здесь .

Я добавил это в сериализатор:

def get_fields(self, *args, **kwargs):
   fields = super(CellCESaveSerializer, self).get_fields(*args, **kwargs)
   fields['row'].queryset = Descriptor.objects.filter(project=self.context['id'])
   return fields

и передал идентификатор проекта через контекст

serializer = CellCESaveSerializer(Cells,  data=data,many=True, context = {'id':id, 'descriptoridlist' : descriptoridlist}, partial=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...