django rest framework - поле имени пользователя не отображается в форме API для просмотра html - PullRequest
0 голосов
/ 14 марта 2020

В Django Rest Framework не отображается поле username в моей доступной для просмотра форме API html, но когда я комментирую имя пользователя в приведенном ниже коде, оно показывает поле имени пользователя в моей доступной для просмотра форме API html. Я новичок в Django, поэтому любой может помочь мне здесь

from rest_framework import serializers
from .models import Note

class NoteSerializer(serializers.ModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name='note-detail', lookup_field='pk')
    #username = serializers.StringRelatedField(many=False)
    class Meta:
        model = Note
        fields = ['url', 'id', 'username', 'note_text', 'created_date', 'updated_date']

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

A StringRelatedField используется для обозначения отношений, в которых целевой результат вычисляется с использованием метода __str__. Если вы посмотрите на исходный код , вы заметите, что StringRelatedField только для чтения. Поскольку значение не может быть отредактировано, вы не увидите его в форме API HTML, доступной для просмотра.

После того, как вы прокомментируете эту строку, используется отношение иностранных ключей, и оно возвращает идентификатор пользователя. В этом случае вы видите поле username в форме, но значение является не строкой, а целым числом.

Я не думаю, что есть способ сделать StringRelatedField редактируемым в сформироваться. Для получения дополнительной информации, пожалуйста, взгляните на сообщение SO .

0 голосов
/ 14 марта 2020

Сериализаторы модели будут автоматически генерировать набор полей для вас на основе модели .

...