Django Djagno Rest框架序列化仅在第一列中读取
我正在尝试将列表中的数据读入序列化程序。当在下面执行该方法时,它只将仪表板的名称附加到my widgets_value表中。关于Django Djagno Rest框架序列化仅在第一列中读取,django,django-rest-framework,django-serializer,Django,Django Rest Framework,Django Serializer,我正在尝试将列表中的数据读入序列化程序。当在下面执行该方法时,它只将仪表板的名称附加到my widgets_value表中。关于widget\u endpoint\u post方法,它首先接收一个请求对象,如下所示 请求对象 {'dashboard_name': 'check_out', 'widgets': [{'position': {'top': 1, 'left': 1, 'width': 1, 'height': 1}, 'name': 0, 'content': {}, 'publi
widget\u endpoint\u post
方法,它首先接收一个请求对象,如下所示
请求对象
{'dashboard_name': 'check_out', 'widgets': [{'position': {'top': 1, 'left': 1, 'width': 1, 'height': 1}, 'name': 0, 'content': {}, 'public_private': '', 'owner': '', 'title': ''}], 'type': 'public', 'user': 'Person_1'}
下面的方法使用两个序列化程序,一个用于创建引用仪表板的表,另一个用于保存每个仪表板的布局
views.py
@api_view(['POST'])
def widget_endpoint_post(request):
body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
serializer=AddDashboardSerializer(data=request.data)
data={}
if serializer.is_valid():
account=serializer.save()
body['dashboard_name']=account.dashboard_name
body['user']=account.user
body['type']=account.type
print('test')
else:
data = serializer.errors
print(body['widgets'])
# print(body['widgets'])
for x in range(len(body['widgets'])):
print(body['widgets'][x]['position']['top'])
serializer2=AddWidgitSerializer(data=request.data)
data={}
if serializer2.is_valid():
account=serializer2.save()
body['dashboard_name'] = account.dashboard_name
body['type'] = account.widget_type
body['user'] = account.owner
body['widgets'][x]['name'] = account.widget_name
body['widgets'][x]['position']['top'] = account.top
body['widgets'][x]['position']['left'] = account.left
body['widgets'][x]['position']['width']=account.width
body['widgets'][x]['position']['height']=account.height
else:
data=serializer.errors
return Response('Dashboard saved')
序列化程序.py
class AddDashboardSerializer(serializers.ModelSerializer):
dashboard_name=serializers.CharField(),
user=serializers.CharField(),
type=serializers.CharField(),
class Meta:
model= DashboardView
fields=['dashboard_name','user','type']
class AddWidgitSerializer(serializers.ModelSerializer):
dashboard_name=serializers.CharField(),
widget_name=serializers.CharField(),
top=serializers.CharField(),
left=serializers.CharField(),
height=serializers.CharField(),
width=serializers.CharField(),
widget_type=serializers.CharField(),
owner=serializers.CharField(),
class Meta:
model=WidgetView
fields=['dashboard_name','widget_name','top','left','height','width','widget_type','owner']
下面是WidgetView表,它只验证仪表板的名称,我不知道为什么
试试这个
class AddDashboardSerializer(serializers.ModelSerializer):
dashboard_name = serializers.CharField()
user = serializers.CharField()
type = serializers.CharField()
class Meta:
model = DashboardView
fields = '__all__'
试试这个
class AddDashboardSerializer(serializers.ModelSerializer):
dashboard_name = serializers.CharField()
user = serializers.CharField()
type = serializers.CharField()
class Meta:
model = DashboardView
fields = '__all__'