django rest 3.1.1 - one to many serializer with “many” attribute

Обновить

December 2018

Просмотры

1.5k раз

5

Я хочу, чтобы создать простой сериалайзер, что каждый, кто хочет смогут добавить вопрос с несколькими ответами (сколько, что он хочет)

один вопрос- мульти ответы

  • Я хочу, чтобы иметь возможность добавлять со сборкой в ​​HTML форме, а не для редактирования JSON.

мои модели:

    class Question(models.Model):
         question_text = models.CharField(max_length=30)

    class Answer(models.Model):
         question = models.ForeignKey(Question)
         answer_text = models.CharField(max_length=40)

мой url.py

class AnswerSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Answer
        fields = ('answer_text',)


class QuestionSerializer(serializers.HyperlinkedModelSerializer):

    answers = AnswerSerializer(many=True)
    class Meta:
        model = Question
        fields = ('question_text', 'answers',)

class QuestionViewSet(viewsets.ModelViewSet):
    queryset = Question.objects.all()
    serializer_class = QuestionSerializer

Теперь, когда я запустить веб-я получаю сообщение:

«Списки не поддерживаются в HTML ввода.»

пожалуйста помоги :)

первое редактирование

даже когда я удалить ( «много = True») я получаю сообщение об ошибке при попытке опубликовать:

AssertionError на / вопросы / The .create()метод не поддерживает записываемые nestedfields по умолчанию. Написать явный .create()метод сериализатором api_project2.urls.QuestionSerializer, или установить read_only=Trueна вложенных полях Serializer.

Thats создает м второй проблемы: создать () метод, который я не knwo как редактировать

2 ответы

1

Ваша цитата ответ на ваш вопрос. Входные формы встроенного просмотра HTML не поддерживают списки.

Похоже , что поддержка была запланирована на 3.1 , но я не вижу каких - либо упоминаний в примечаниях 3.1 выпуска .

3

при удалении ( «много = True»), вы получите сообщение об ошибке при попытке опубликовать, потому что вы не перепишете функцию создания, вы должны переписать функции создания