django - Django REST 未正确呈现表单
问题描述
我有以下代码,它应该呈现一个 FooBars 列表。我有两个问题:第一个是,当我取消对 state、foo 和 bar 对象的注释时,列表会使用数据库中的实际数据(它们是选择字段)呈现它们,但是当我让它们评论时,它只显示选择整数。
第二个问题是,当我然后导航到rest/foo/1/?html_form=true
HTML 表单并查看 HTML 表单时,如果我留下注释,它只会呈现state
,foo
和字段。bar
我想让它们不加注释,以便用户可以查看实际数据,但这会使我或用户无法编辑这些字段。
我究竟做错了什么?
休息.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')
解决方案
这个问题可以参考我另一个问题的答案。而不是intent_style
在 HTML 文件中,我写的是bar_stlye
,所以它不能正常工作。
推荐阅读
- ios - 是否可以在没有用户交互的情况下在 Swift 中使用 OTP 填充文本字段?
- ios - 如何在 SwiftUI 中将本地 JSON 文件解析为 ListView?这里是应用程序开发的新手
- java - 如何配置 IntelliJ 的 Java 代码样式,以便在长时间优先于链式方法调用时包装分配的右手
- sql - SQL - 仅选择包含 sum(data) 的列
- r - 检查对象在r中是否为空或空字符串的最佳方法
- corda - 尝试使用 docker 为我的一个 cordapp 连接 postgre
- asp.net-core - Blazor 服务器应用程序中的 HttpContext.Session
- makefile - Makefile 中对目标的可选依赖
- javascript - 按值对对象数组进行分组并获取组数
- javascript - 具有水平滚动的 CSS 固定 div