Переопределение PrimaryKeyRelatedField для сериализации нулевого объекта RelatedField на основе запроса - PullRequest
0 голосов
/ 09 марта 2019

Может кто-нибудь подсказать, как я могу сериализовать следующий тип связанного с нулем поля, чтобы получить сериализованный список объектов JSON, который не равен нулю при получении запроса

class SomeModel(models.Model):
    a_fk = models.ForeignKey(ForeignObj1, null=True, on_delete=models.CASCADE)
    b_fk = models.ForeignKey(ForeignObj2, null=True, on_delete=models.CASCADE)


class SomeSerializer(serializers.ModelSerializer):
    class Meta:
        model = SomeModel
        fields = ['a_fk', 'b_fk']

Что я получаю / вижу в API JSON с возможностью просмотраis

{
   "a_fk": null,
   "b_fk": null
}

, но набор запросов полей выбирается в форме API для просмотра POST-запросов, как и обычные формы django

Я хотел бы видеть фактический список доступных объектов наборов запросов наэти поля возвращаются при получении запроса, даже если он имеет значение null, если я переопределю PrimaryKeyRelatedField init (), что я и сделал, при печати полей по-прежнему возвращался пустой набор запросов, что означает, что он по-прежнему обрабатывает поле как нулевое.

Я просмотрел исходные коды и до сих пор не могу понять, как сделать это динамически при получении запроса

PS Поля должны оставаться пустыми из-за некоторого бизнес-сценария использования.Любое движение в правильном направлении будет высоко оценено

мой взгляд на данный момент выглядит следующим образом

class SomeViewSet(viewsets.ModelViewSet):
    queryset = Some.objects.all()
    serializer_class = SomeSerializer

У меня также есть другое представление @action getter, встроенное в отдельный ModelViewSet, пытающийся получить с помощьюзапрос также, все еще возвращая те же нулевые объекты.

После поиска часов, я думаю, уместным должен был быть вопрос, как мне создать итеративный список выбора из нулевого PrimaryKeyRelatedField, снова толчок вправильное направление будет высоко ценится ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...