У меня есть следующий код, который должен отображать список 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')