我有以下代码,应该呈现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')