Django REST无法正确呈现表单

时间:2019-06-20 08:43:10

标签: django django-rest-framework

我有以下代码,应该呈现FooBars的列表。我有两个问题:第一个是,当我取消注释状态,foo和bar对象时,列表将使用数据库中的实际数据(它们是选择字段)来呈现它们,但是当我将其保留为注释时,它仅显示选择整数。

第二个问题是,当我导航到rest/foo/1/?html_form=true并查看HTML表单时,如果出现以下情况,它将仅呈现statefoobar字段我让他们发表评论。我想不加注释,以便用户可以查看实际数据,但是这使我或用户无法编辑这些字段。

我在做什么错了?

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 :(得分:0)

这个问题可以参考my other question中的答案。我没有写HTML文件中的intent_style,而是写了bar_stlye,所以它不能正常工作。

相关问题