Пользовательский сериализатор Django rest framework с использованием внешнего ключа

class MyModel():
    # fields

class MyModelSerializer(serializers.ModelSerializer):
     class Meta:
        model = MyModel

class CustomSerializer(serializers.Serializer):
    comment = serializers.CharField(required=True)
    mymodel = MyModelSerializer() #?? here is the problem

Я хочу создать API, который будет принимать два аргумента: первый — действительный идентификатор экземпляра MyModel (из раскрывающегося списка на просматриваемой странице API), а второй — comment.

Я попробовал вышеуказанный подход, но не показывал раскрывающийся список в своем html. кроме этого я пробовал RelatedField с many=True и некоторыми другими возможными подходами.

в конце концов, мой API будет принимать два ввода: идентификатор (объект MyModel) и комментарий.

http://www.django-rest-framework.org/api-guide/fields/#multiplechoicefield

http://www.django-rest-framework.org/api-guide/fields/#listfield


person Wendy    schedule 20.05.2016    source источник


Ответы (1)


Попробуйте использовать что-то вроде:

class CustomSerializer(serializers.Serializer):
    comment = serializers.CharField(required=True)
    mymodel = serializers.ChoiceField(choices=list(MyModel.objects.all().values_list('id', flat=True)))
person Konstantin Moiseenko    schedule 20.05.2016
comment
Пытаюсь сделать это в поле ForeignKey (client_id), но получаю Object of type Client is not JSON serializable - person radtek; 17.07.2018