Django REST неправильно отображает форму - PullRequest
0 голосов
/ 20 июня 2019

У меня есть следующий код, который должен отображать список FooBars. У меня есть две проблемы: во-первых, когда я раскомментирую объекты состояния, foo и bar, список отображает их с фактическими данными из базы данных (это поля выбора), но когда я оставляю их прокомментированными, он просто отображает выбор целое число.

Вторая проблема заключается в том, что когда я затем перехожу на rest/foo/1/?html_form=true и смотрю на форму HTML, она отображает только поля state, foo и bar, если я оставляю их в комментариях. Я хочу оставить их без комментариев, чтобы пользователь мог просматривать фактические данные, однако это не позволяет мне или пользователю редактировать эти поля.

Что я делаю не так?

rest.py

class FooBarSerializer(serializers.ModelSerializer):
    id = serializers.IntegerField(required=False)
    #state = serializers.SerializerMethodField(label=_('State'))
    #foo = serializers.SerializerMethodField(label=_('Foo'))
    #bar = serializers.SerializerMethodField(label=_('Bar'))

    def get_state(self, obj):
        return obj.get_state_display()

    def get_foo(self, obj):
        return obj.get_foo_display()

    def get_bar(self, obj):
        return obj.get_bar_display()

    class Meta:
        model = FooBar
        fields = ('id', 'state', 'foo', 'bar', 'bool1', 'bool2', 'bool3')

class FooBarViewSet(viewsets.ModelViewSet):
    serializer_class = FooBarSerializer
    permission_classes = (IsAuthenticated, IsAdminUser)
    queryset = FooBar.objects.all()

    def render_form(self, request, serializer, status):
        from django.shortcuts import render
        return render(request, 'foo/foobar_item.html', {
            'intent_form': serializer,
            'intent_style': {},
        }, status=status)

router.register(r'rest/foo', FooBarViewSet, 'foobaritem')

1 Ответ

0 голосов
/ 04 июля 2019

На этот вопрос можно сослаться на ответ в моем другом вопросе . Вместо intent_style в файле HTML я написал bar_stlye, поэтому он не работал должным образом.

...